Flatten frontend

**Not ready for merge**

This is work in progress and not ready for merge, but mostly so we can see if this approach is going to work. This is a bit delicate, so I want lots of eyes on what we're doing here...

The basic idea is to move all the code we had in `frontend` and put it at the top, as recently discussed, and then to create a shim module capable of forwarding all `from IPython.frontend... import...` to their new locations.

Note that in order to get this to work on my system, I had to do some very messy low-level munging of my submodules setup, and I'm not sure if that will work automatically.  So to review this PR, you may need to dig a bit into the internals of your `.git/modules` directory, I'm afraid. Submodules are a royal PITA, to say the least (though we do need them).

There are a few things to be done before this could be merged:

- [ ] Investigate if it's possible to switch to an `__import__` call instead of using `exec` and `eval`.
- [ ] See if the warnings can be redirected to stderr, which I'd prefer.
- [ ] Update all the rest of the code so that no warnings are triggered by our own code from any application.
- [ ] Pass the test suite again, obviously.  Note that though the test suite doesn't pass in its current form, the main apps (terminal console, qtconsole and notebook) all do start fine.