Slight refactoring of JSON::MergePatch#call

Breaking up the existing #call so that its a bit easier to
track the flow. This refactor introduces four private methods
to accomplish this.

* JSON::MergePatch#process_patch_property
* JSON::MergePatch#evaluate_patch_property
* JSON::MergePatch#remove_property
* JSON::MergePatch#update_property
Merge pull request #5 from akeem/merge_patch_call_refactor

Slight refactoring of JSON::MergePatch#call
Remove extra return statement for primitives

There's no need to return nil for the special case obj.nil? since
returning the object itself will do.
Add tests to verify purging of nils for hashes
Refactor #merge; use recursion for all the things
Merge pull request #6 from chrishunt/chrishunt/refactor-merge

Recursively merge all the things