Src: Refactored modules to allow external coupling

This is a really big commit.

I changed the way the modules are built to improve some process:

- It makes easier to plug external modules like a new diff in the build process (See #364)
- Modules won't rely too much on global-like variables
- JSHint grunt process now checks for errors before the build (concat) process
- Actually there's a double check with JSHint after QUnit being built

I detected some whitespace issues in the process but fixed only few, I'm planning to fix this later.