Require.js (WIP)

Opened so people can spy on me.  Please ignore random code snippets sitting in files they don't belong in (especially in notebook.js), I'll move them when I get to the correct file.
Just files I haven't got to yet.  Everything is still work in progress and things that I feel may need to be moved somewhere else, I just move and deal with later.  I didn't want to add TODO comments everywhere since there are a lot of places like this (as you point out) and I usually get to them sooner than later.