JSHint Refactoring

These changes configure JSHint to be used as part of a build process.
Currently it is not included in the 'default' task, but probably should in very near future.

Travis, while full blown CI  Server, is currently used to run the 'test' grunt task and not the full build task (this can change in future, or be left like this). Also, a test runner can be added to the 'test' task.

All of the changes are made in order to satisfy JSHint errors, and more future refactorings would be needed.
Also JSHint has some more options that can be enabled, but are kept off for now.

There are 12 more JSHint warnings (down from 345 in the beginning) that are not super obvious how to fix.
This is a good test for Travis too - it should be able to run the test, display the result, but show 'build failed' due to these.
If i am understanding it correctly, in this case if condition will be executed for each unit and then only the for loop will execute?