Upgrade to Async 1.4.0
Modify Deferred.group() callbacks to include a type due to the async library
template change in 1.3.3.
Modify UniqueId private variable names to conform to the rest of the source.
Fix up UniqueId unit tests for async
Refactor the UID assignment process to be fully asynchronous.
This concludes the migration of the UniqueId code to provide
a completely non-blocking interface.
Start to convert the write path to be fully async.
We need to resolve the metric and tags asynchronously, so start to adapt
the code around the fast path for writes (not the one used for batch
imports) to expect to know what row to write to asynchronously.
Make the write path fully asynchronous.

Lookup or create all UIDs asynchronously, which was the last
step required to make the write path truly, fully asynchronous.
Previously the data point itself was written asynchronously,
but if we had a lot of new metrics or tags to create or lookup,
these were happening serially.

The net side effect of this change is that if multiple tags
need to be created for a single data point, they are now all
created concurrently.
Fix TeststTSDB.java and TestTsdbQuery.java for compatability with the new
async read/write path.
Modify TsdbQuery to run the query scanner asynchronously
Add Query.runAsync() method
Deprecate UniqueIdInterface.

This interface has never been useful and will eventually be removed.

Change-Id: Ie63411f17486074a4dd96829af09d172363cc1f2
Factor out a bit of UniqueId code.
Add RowKey.metricNameAsync() to fetch the metric name asynchronously from a
row key
Add Tags.getTagsAsync() to resolve the tags asynchronously from a row key
Add async methods for all DataPoints implementations so that the full query
path can be converted to async code.
Modify GraphHandler to execute queries asynchronously.
Fix TestTsdbQuery.java for async calls
Update /api/query to run the data points queries asynchronously