Source code linting is added.

### Changes list.

1. Linting is added (via jshint task for grunt). Either default task or watch:all grunt task makes jshint to scan code (its quite fast).
2. Fixes due to linting results are implemented also;

### Current jshint configuration:

 - `es3` - This option tells JSHint that your code needs to adhere to ECMAScript 3 specification.
 - `eqeqeq` - This options prohibits the use of `==` and `!=` in favor of `===` and `!==`.
 - `expr` - This option suppresses warnings about the use of expressions where normally you would expect to see assignments or function calls.
 - `forin` - This option requires all for in loops to filter object's items. The for in statement allows for looping through the names of all of the properties of an object including those inherited throught the prototype chain.
 - `immed` - This option prohibits the use of immediate function invocations without wrapping them in parentheses.
 - `latedef` - This option prohibits the use of a variable before it was defined. JavaScript has function scope only and, in addition to that, all variables are always moved—or hoisted— to the top of the function.
 - `smarttabs` - This option controls the warning when space after tab.
 - `strict` - This option requires all functions to run in ECMAScript 5's strict mode.
 - `sub` - This option suppresses warnings about using `[]` notation when it can be expressed in dot notation: `person['name']` vs. `person.name`.
 - `newcap` - This option requires you to capitalize names of constructor functions.
 - `noarg` - This option prohibits the use of `arguments.caller` and `arguments.callee`.
 - `nonew` - This option prohibits the use of constructor functions for side-effects.
 - `trailing` - No more trailing white-spaces:-)
 - `undef` - This option prohibits the use of explicitly undeclared variables.
 - `unused` - This option warns when you define and never use your variables.
 - `devel` - This option defines globals that are usually used for logging poor-man's debugging.
 - `laxbreak` - This option suppresses most of the warnings about possibly unsafe line breakings in your code.
 - `node` - This option defines globals available when your code is running inside of the Node runtime environment.
 - `browser` - This option defines globals exposed by modern browsers: all the way from good old `document` and `navigator` to the HTML5 FileReader and other new developments in the browser world.
 - `scripturl` - This option suppresses warnings about the use of script-targeted URLs.
 - `jquery` - This option defines globals exposed by the jQuery JavaScript library.
 - `predef [ 'define' ]` - Set of predefined variables.

This is just a small & soft set of enabled options. You can go [here](http://www.jshint.com/docs/options/) to get more information about other ones.
Не совсем понял коммент, ты считаешь, что везде нужно сделать определение с var для каждой переменной?