Add Internal.GetLastDataPointCB() to parse the last data point from a row in
storage, skipping all non-datapoint values.

Signed-off-by: Chris Larsen <clarsen@euphoriaaudio.com>
Add RowKey.rowKeyFromTSUID() to generate a row key given a TSUID and a timestamp

Signed-off-by: Chris Larsen <clarsen@euphoriaaudio.com>
Add Tags.resolveIdsAsync() to handle asynchronous ID to tag resolution. Also
added unit tests for the call
Make Tags.resolveIds() and Tags.resolveAll() public

Signed-off-by: Chris Larsen <clarsen@euphoriaaudio.com>
Fixed the conflicts while cherrypicking "Add RowKey.rowKeyFromTSUID() to generate a row key given a TSUID and a timestamp".