Refactor use func

This PR basically does three things:

1) `Application.use()` no longer exists. When you create an Application object, you specify the backend. No more backend-less state.
2) There is no more `app.default_app` because it is initially None, which makes things complicated. Instead, use `app.use_app()` to get the default app instance. 
3) There is now a `vispy.use()` function that acts as a proxy for `app.use_app` and `gloo.gl.use_gl`. 

Some explanation on 3: One can now do e.g. `vispy.use('glfw pyopengl')`. A more interesting example is `use('pyqt4 es2')` in which case the app backend must know that it should use EGL (instead of a desktop context). And later on ... `use('ipython_notebook')` or `use('browser'). This PR thus paves the way (a wee bit) towards use of ES2, Angle and browser-based rendering.



I am not sure I understand. Right now, all gl backends ('desktop' and 'pyopengl') work with any app toolkit. As soon as we get other app and gl backends that cannot be paired, yes, then we need to put that logic here. I added the 'ipynb' as an example of how that could look like. Is this what you meant?