Revised API for discussion purposes

Per the discussion in #6 and #8, this is a revised api for purposes of
further discussion. As more use cases have become known there have been
changes to the Options object to support passing back additional information
(status code, json result, response object). This new API differentiates
between input objects (Options) and returned object (Results). This makes it
more explicit which fields are input vs. output and always exposes the
status code and http response object in the Results object.