Simplify device-to-device request w/*Query structs

Simplify device-to-device requests by generating a `<command name>Query`
struct for each command.

Known issues
============

 - While this seems to work fine for a single device-to-device query,
   there seems to be an issue when more than one method uses a `Query`
   struct to process a device-to-device request.  Further investigation
   is needed.  See issue #11.