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.
We should never pass `options` down like this. It means that the child instance is getting way too many options passed to it. If it happens to save the `options` dict as an instance attribute, we are creating needless references everywhere. Each time an `options` taking function/constructor is called it should be passed an explicit object.