Provide copy constructors for JsonObject and JsonArray

These new constructors allow for creating modifiable copies of given
objects and arrays.

  JsonObject( JsonObject )
  JsonArray( JsonArray )
Enable mocking

Add test to ensure that types in this package do not prevent mocking
by final or visibility constructs.
Implement equals and hashCode

Implement equals to allow comparing JsonValues. Two JsonValues are
considered equal if and only if they represent the same JSON text.