Making type IDs accessible from Rust code

These patches should allow the use of Capn'Proto type ids from Rust code.

For a Capn'Proto struct, it declares a `const TYPE_ID: u64` in the module defining the struct, and the `Reader` and `Builder` both implement the `HasTypeId` trait defining a `type_id(_ : Option<Self>)` function (no better way to call it before UFCS).

For an enum, it only makes the enum implement the `HasTypeId` trait.

For an interface, it declare a `const INTERFACE_ID: u64` in the module defining the interface, and the Client implements the `HasTypeId` trait

This pull request requires the HasTypeId trait in the runtime library.
I feel like this ought to be called `TYPE_ID` as well. That would be more consistent with the C++ version (see the definition of `CAPNP_DECLARE_INTERFACE_HEADER` in [generated_header_support.h](https://github.com/kentonv/capnproto/blob/master/c%2B%2B/src/capnp/generated-header-support.h). Do you have a reason to prefer `INTERFACE_ID`?