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.
I talked to @jdfreder in person about this, but I think if we want to use options to act like kwargs in Python, then we should use the same calling approach. Namely that everytime you call a function/constructor that accepts `options` you should manually build and pass the dict at the time you call it. Overwise the code is much worse than just using positionals as you can't tell what actually gets passed where.