Hooks v1

 - added jshint
 - updated nested properties test with more edge cases
 - implement a bunch of hooks tests 
 - moved tests for a certain feature to seperate file for easier test running.

I made a bunch of atomic commits, might be easier to review commits.

I don't like complecting these features into one PR however I needed to fix nested properties bug to get hooks to work. I wanted seperate files to be able to run & work on tests for each feature area & jshint saved my ass in getting my commits correct.

cc @Matt-Esch @neonstalwart