Find UniqueId suggestions asynchronously.

This is the first patch in a series to make all the UniqueId code
asynchronous / non-blocking.
Serve /suggest asynchronously.
Deprecate UniqueIdInterface.

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

Change-Id: Ie63411f17486074a4dd96829af09d172363cc1f2
Make UniqueId lookups asynchronous.
Factor out a bit of UniqueId code.
Coding style fixes.

Rename some variables to be consistent with the rest of the code base.
No actual code change.
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.
Update to suasync v1.3.3.
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.
Add a helper method for asynchronous internal errors.
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
Fix RuntimeException catching in TsdbQuery.run() after adding async code
Add async methods for all DataPoints implementations so that the full query
path can be converted to async code.