Add support for request tracing

Pass :trace => true to #execute to request tracing, traces are automatically loaded for responses with the tracing flag set.
Rewrite the trace API to load the trace only on request

Traces aren't guaranteed to be completely written when the response is returned to the client. Instead of always loading the trace (which most of the time would result in an incomplete trace being loaded), only load it on request.

The QueryResult#trace method now loads the trace (and raises an IncompleteTraceError if it detects the trace to be incomplete -- i.e. missing the duration field).

I couldn't find a way to make the API seamlessly work synchronously and asynchronously, so currently this feature is only available in the non-public asynchronous API.
Update docs for request tracing

[ci skip]