Added an "asynchronous" mutex.

Review: https://reviews.apache.org/r/18950
Simplified future await latch semantics.

Now a latch is created per 'await' and the 'onAny' callbacks are used
to set the latch removing the need to maintain and set a "global" per
future latch.

Review: https://reviews.apache.org/r/18951
Increased thread-safety of Promise::associate.

Most of Promise is thread-safe because Future is thread safe, except
for associations. An 'associate' bool was added to avoid duplicate
associations or doing a set/fail/discard on a promise after it has
been associated.

Review: https://reviews.apache.org/r/18952
Improved thread-safety of Latch.

Review: https://reviews.apache.org/r/18953
Added Future::after.

Review: https://reviews.apache.org/r/18954
Fixed JSON to protobuf parsing for enums.

Review: https://reviews.apache.org/r/19003
Minor C++11 bug fix.