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:

>> +/// A visitor to build accessor functions for each register struct
>> +pub struct BuildAccessors<'a, 'b, 'c> {
>
> Any reason not to unify lifetimes here?
>
I played around with these for quite a while to make the borrow checker
happy. That being said, things have changed substantially since then, so
perhaps they can now be unified. I'll have a look later.