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.
`something_else.whatever = this` is a code smell for me. I'm not asking you to change it, but we should think about why we need that/how to get around/if there would be a nice api.