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