Added an example showing how to send/receive custom metadata, and handle call cancellation. Implemented the remaining parts of metadata and cancel handling. Addresses part of #8 and #12.