Thrift abstraction cleanup

Remove an extra unnecessary level of abstraction from the thrift logic.

This should make it easier to implement thrift services.

While in there, I fixed #65, but may have broken it for dbus.  I'll have
to re-write a bunch more of this when I switch out the option
implementation.