update api to include method for storing a single metric

It might seem a bit redundant to have a method for storing a single data point
and another for storing a set of data points since the latter can be used for
the former; however, there is good justification. The version that takes a set
returns a ListenableFuture<Map<RawNumericMetric, Throwable>> which is a map of
any failed inserts. Writes are done in parallel so we do not stop submitting
requests to C* if a given write fails. In fact, we could very well finish
submitting all write requests before getting back a response for the initial
write.

The returned map allows the client to decide what do to about any failed
inserts. There is a bit of extra work done in order to track errors. If we are
only inserting a single data point, we do not need to do that extra work.