Decouple the context object from DTestResult.
Decouple the context object from DTestResult.

This change improves thread-safety dramatically by taking data which
could now vary per-thread (_nextctx, _ctx, etc.) and putting it into
an object which is allocated per thread, namely a ResultContext (or
MultiResultContext).

klmitch/dtest,klmitch/dtest