RFC for "fat objects" for DSTs

This is intended as an alternative to #5.
You left out the `as_element(&self)` implementation (i.e. override) for `Element`.  Presumably it would look something like this:

```rust
impl<T:Element> Node for T {
    fn as_element<'a>(&'a self) -> Option<&'a Element> {
        Some(self as &Element)
    }
}
```

where there is nothing new about the above (i.e. its all just DST fat pointers; there are no fat objects here).  Right?