JavaScript Compiler Cleanup

* Improves usefulness of `extend` utility
* Properly use the namespace in the JavaScript compiler output
* Removes redundant check for a number since it can't match the regexp anyway
* Update `setupOptions` to return an object, which is much simpler to work with