Trait based inheritance

This is largely based upon #9 and #91, but fleshed out to make an actual inheritance proposal.
It may not be immediately obvious what is happening, but the ability to convert `HashMap<..., Vec<uint, u8>>` to `HashMap<..., Vec<int, i8>>` could in fact be very helpful.