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:

>> +      let s = "*[".to_string() + access_tag.to_string()
>> +        + "]* " + token::get_ident(d.node).get();
>
> `to_string()` calls here makes quite a mess, I'd suggest using `format!()`
>
Done.