Fix IPython.start_* functions

`start_kernel()` didn't work at all (#4005), and I found while investigating that passing `user_ns` to either `start_ipython()` or `start_kernel()` had no effect, because the Application wasn't passing it on to the Shell.

This is a simple fix for the most pressing issues. We should think about any other parameters that we want to be passed through from our top level API, e.g. possibly `user_module`.

Definitely a candidate for backporting to 1.x