Recursion support and JSHint

So, here's the updated pull request. I merged in the latest changes, enabled the eqeqeq jshint directive, and fixed all the jshint errors. The diff here is getting rather large.