Use extract method to uncomplicate compile_hash

This addresses two concerns identified through code climate:
compile_hash is very complex and has duplication.

DRYing up setting population to address duplication.

Using extract method on other bits of logic to clean up this method.
Merge pull request #510 from bhicks/code-climate-improvements

Use extract method to simplify compile_hash
Working on #503, handle case with no lookup_context
Fixes #502 to support root_name even when object is nil
Bump to version 0.9.3.pre1
Minor tweak to whitespace in readme
Adds note to breaking change re #505
Bump to final version 0.9.3
Added configuration option to exclude nil values
Added documentation about the eclude-nil-values option
Merge pull request #514 from oharsta/feature/exclude-nil-values

Feature/exclude nil values
Set default root_object lazily.
Corrected JSON

Generated JSON was invalid JSON. Corrected!
Merge pull request #519 from shirish4you/patch-1

Corrected JSON
Replace empty string values with nil flag
Replace emtpy stirng values with nil flag fix bug
Remove needless file
Merge pull request #522 from nickkov89/master

Replace empty string values with nil flag
Fixes bug with string values being replaced by nil
Merge pull request #534 from nickkov89/master

Fixes bug with string values being replaced by nil