add guava-testlib for additional test coverage
remove support for storing a single null

we don't need to maintain bug compatibility with java.util.TreeMap
call to getBoundaryNode() is required when iterating sub-map

need to investigate why this is the case - this call is not free
clear cached views when cloning
return same view from keySet() and navigableKeySet()

Guava's NavigableMapTestSuiteBuilder expects keySet() to be a NavigableSet,
and found a copy-paste bug in keySet().ceiling(K)
also test serializability