Improvements to WS API

This commit solves two problems:

* It solves the WS execution permutation problem, where there needs to
  be every permutation of every method name and body type, by making the
  method and body settable on the request holder, and providing a no arg
  execute method that uses the set method/body.
* It allows you to stream the body as an enumerator, making it very
  simple to pass to a response.
Merge pull request #2742 from jroper/ws-request-permutations

Improvements to WS API