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.
Not sure I understand completely the question ;)

The code could have been written like this:
for (var k in obj) {
  if (obj.hasOwnProperty(k)) {
    // do stuff on k
  }
}

May be including the if on the same line is not too clear and we should fix it (there is actually a JSHint option for mandatory {} around statements).

Another option we can use, since only browsers supporting ES5 are used:

obj.forEach(function(k) {
  // do stuff on k
});