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 agree, I'd like to change that but I needed it for the mvp.  The problem here is that save widget needs an handle to the instance of the notebook, and the notebook needs a handle to the instance of the save widget (circular refs.).  This is done a couple of places, I'd be **very** interested in a best-practice for this.  Pinging @minrk and @takluyver since they may have ideas.