Add support for device-to-device requests...

Add support for device-to-device requests through the following changes:

 - Add `request` method to `I2CQuery` functor class.
  - This method takes a nanopb message structure, along with references
    to the corresponding request/response nanopb field types, and an I2C
    address, and sends the request and fills the response object with
    the decoded response string received over I2C.
 - Add union request/response types for each command type in the
   generated `NodeCommandProcessor` header.