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
Actually,  this means that I'll need to change a lot of `box<Gc>`s to `Rc::new(...)`. I could do this, but it seems like it might be better to switch to `Rc` once `box` works with it as syntactically it's much cleaner.