Guava cleanup

This is a first step in removing our usage of guava (#288). I've removed the easy bits in this PR. This is a work in progress but I think it's going to be easier to merge now, and continue with additional pull requests.

An unsolved problem is how to tackle the guava classes that are exposed in the public API:

* AtomicDouble in DoubleGauge
* Function in MetricTransformObserver and the Contextual Monitors.
* Cache in Monitors.newCacheMonitor


I'm not sure if it's useful (note that the latest diff is just Preconditions.checkNotNull(value, "value")).

We could certainly figure out which parameter was null from the stack trace of the NPE.  I'll be glad to update the PR if you think it's better.