Allow IPython directory to be passed down to kernel selection from App

With apologies to @ivanov for creating a new Manager class.
Nicer error message when kernel is not found