Fix json de/serialization of java.util.logging.Level.FINE
Fix converting objects with a toJSON() function to their wire format.

When we call toJSON() on an object to convert it to it's wire format, we
must recurse on the returned object to make sure all properties are
properly converted.
Introduce a new serializable type.

This is used for types that cannot be synchronously converted to their
JSON wire format (synchronous types may continue using the standard
toJSON() function)
Update the js builder to select a server jar from the current environment.

Also update the examples to support this new behavior.
Clean up test code