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 don't think it is possible to make a name collision in our case, as all these constants reside inside a module (I'm not even sure a name collision is possible in Rust).
```
mod foo {
    const A: u64 = 42;
    pub mod bar {
        const A: u64 = 0;
        // A will be 0 in bar
    }
    // A will be 42 in foo
}
```
And every use of these constants have to be explicit like `foo::bar::A` or `use foo::A;`

It is also allows to just write `MyStruct::TYPE_ID` instead of `::capnp::traits::HasTypeId::type_id(None::<MyStruct>)` which I find really ugly. I hope they will provide a better solution with UFCS.

But then I guess as this notation is not possible with enums, it may be better in the long term to provide one single unified interface for every type through HasTypeId ...