WIP: http sync (take 2)

- improve docs
- add tests for sync case
- modify http tests so that they now pass
- Still TODO: Update call sites (oauth)
More concise server logging of unexpected errors.

'exception.stack' already contains 'exception.toString()' at the top. The original code printed the exception message twice.
OAuth login services use the new http sync api