Rework recent chagnes to be Java 6 compatible.

Recent changes included use of java.util.Objects which is only available in Java 7+. To provide a Java 6+ alternative, bring in a few classes from Google Guava including Guava's Objects. Classes only and with a new package so we don't need to actually need clients to require the library as a dependency.