JCBC-580: Custom equals for Documents and JsonArray/JsonObject.

Motivation
----------
Documents and the underlying content types should be able to be
compared easily. This satisfies use cases where a document is
loaded and compared with a different one. Adding custom
equals methods prevents the developer from doing deep
assertions themselves.

Modifications
-------------
Custom equals and hashcodes are applied which take the nested
data into account.

Result
------
It is easy to compare documents and their underlying contents.

Change-Id: I7557f27bf44a06d27e1fe9b6f8889ac6bcafbbfa
Reviewed-on: http://review.couchbase.org/42073
Tested-by: Michael Nitschinger <michael.nitschinger@couchbase.com>
Reviewed-by: Sergey Avseyev <sergey.avseyev@gmail.com>