Trait based inheritance

This is largely based upon #9 and #91, but fleshed out to make an actual inheritance proposal.
Is this cleverly crossborrowing `node` into a shared reference? (Probably should be `Some(...)`, not `Ok(...)`)