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
Vladimir Pouzanov <notifications@github.com> writes:

>> +        Spanned {
>
> there's `respan` for that.
>
Good point; that's a nice cleanup. I've propagated this throughout the
patch.