Build fixes
Upgrade api changes
Remove unchecked operations
Use Supplier instead of Provider for DateTime

Guice has an explicit understanding of Providers. Binding and injecting
a Provider causes guice to wrap that Provider which calls the TypeListener
every time the get() method is invoked. So, we change the code to use
Supplier to be clear that the injected object should be in no way related
to Guice or dependency injection.
Add missing synchronization
Add getBytes method to Id
Avoid string creation for JSON serialization