Re-wrote IPython startup to work with custom user_ns and banner