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.
Good point, I hadn't thought about this ...
I've made two versions: one with a `pub mod _private` (so it would be possible to access the `TYPE_ID` with `MyStruct::_private::TYPE_ID`) and a second version with `mod _private` declared a private, so those constants are only accessible through the traits.

See my branch at vaelden/capnpc-rust@bf9c17ee3f0d30292e8ad91727e1d8db440baa2d
We can pick the version you prefer.