ioreg syntax extension

I'll need to write something more coherent here but here is the continuation of the ioreg work originally discussed in #90. I've restructured and cleaned up the builder code substantially and getter and setter objects have been implemented. Note that this currently requires some [compiler bits](https://github.com/rust-lang/rust/pull/15732) that have yet to be merged to compile. You can find rustdoc output for the code generated by a simple example [here](http://mw0.mooo.com/~ben/doc/ioreg_test/). More on this later when it's not as late.

I would apply the proper label to indicate this is work in progress but it seems I don't have permission to do so.

## Remaining work

 * Examine options for reducing documentation clutter
Thinking of it, I just don't like the "dangling" `->` part, really. And I like how
```rust
fn func(arg1,
    arg2) -> Whatever {
  let first_line = 1;
}

makes a clear visual distinction on where the body starts. Let's move this into ML maybe? No sense to make a major restyling work because of that.