Fix jshint warnings

Note: I left an error on core.js because it's there to handle
components modules definition, but it should be fixed using AMD, or
CommonJS, or an alternative method.

```
[L1604:C10] E006: Unexpected early end of program.
})(window,
>> Expected an identifier and instead saw '(end)'.
>> Expected ')' and instead saw ''.
>> Missing semicolon.
```

I left some *warned* code:

 * some code on loader.js (I suggest using a different loading strategy)
 * intro.js, outro.js
 * evals on storage.js

See #557

Note about `===` vs `==`
Changing `value == null` to `value === null` as suggested by jshint is
semantically different as `value == null` is true also if `value` is undefined.
Some `== null` were checking also for undefined variables, that's why some
`value == null` have been changed to `typeof value === 'undefined'`.