Raise remote errors better

If the remote raises an error like 400 Bad Request, the error is
generally lost, and all you see is "HTTPError()".  Interpret the error
document in the response and raise a better exception in lieu of more
formal exception decoding.
Implement room.create and room.topic

A couple of API functions were missed; add hooks to create binding
functions.