Add objectMerge test with null value
Use JSONValue object to represent JSON values.

JSONValue wraps arbitrary JSON value and also keeps a reference to it. It also
makes it easy to keep the current path through the structure as we descend into
it by providing structure-descending methods that return JSONValue objects with
properly adjusted reference.
Check if value is list on __iter__.
Replace None with JSONValue.is_undef()
Check in descend() if strategy correctly sets refs
Add failing test for mergeById.
Use logging module to log descends into hierarchy
Fix arrayMergeById
Fix logging of $ref resolves.
Fix tracking of $ref resolves.
Merge branch 'track-json-pointer'
Merge branch 'add-logging-2'

Conflicts:
	jsonmerge/__init__.py