Fix or suppress warnings produced by jshint

This patch makes it so we pass jshint without any issues.

* Moves some function creation outside of loops.  One of those might have actually generated a lot of unnecessary garbage, the other probably doesn't make a difference.
* Jshint complained about our use of eval in `storage.js`; since we need that for IE8, I suppressed the warning for that file.
* It also didn't like the tricky uses of `&&` and `||` to make a bit of code more concise in `loader.js`.   That code is actually so unreadable I just suppressed those warnings for now.  If someone wants to patch that up, go for it!

This would fix #539.