Implementing RequireJS for loading in JS files

RequireJS will build our dependency tree and manage the order in which JS files need to be loaded in.

New JS files will have to be written in an "AMD" compliant form (that just means wrapping it in define() blocks).
Read moar here:
http://requirejs.org/docs/whyamd.html#amd