Refactoring: delegate to private copy constructor

The private copy constructor had a "marker parameter" to distinguish
it from the public constructor. Actually use this parameter to switch
between two methods of creating the fields.
Make JsonValue serializable

Use the default serial UIDs in order to prevent the risk of forgetting
to update a serialVersionUID field after an incompatible change.

Do not include the hash lookup table in JsonObject in the serialized
dump. This data structure is only used to speed up lookups and can be
re-created after deserialization.