Generate service reference documentation.

This change implements a documentation generator that is capable of
documenting both low-level clients and high-level resource objects based
on their JSON description formats. The output is RST, which is in turn
used by Sphinx to generate HTML/PDF/etc on ReadTheDocs.

This implementation is expected to change. It's quick and dirty in a few
places, including instantiating dummy clients to introspect some data.
This **only** affects the Sphinx documentation. It is not used to generate
docs for the interactive shell.

There are no tests, but I expect them to be added in the future.

cc @jamesls, @kyleknap
There's a couple of other types that I think we can use more common python types:

double -> float
character -> string
long -> integer