Simplified api with improved test coverage

This removes the promise arguments functionality which added much
complexity in the form of different resource behaviors and even
different return values based on whether promises were used to define
arguments.

The more simplified api is now enforced with near-complete code
coverage.