Handle kernel start failures more gracefully

If a user does not have a kernel installed on their system, but they try to open a notebook with that kernel, they will get a "kernel died" error, which doesn't make a lot of sense because the kernel was never running. This pull request attempts to handle kernel start errors more gracefully, and give the user a more informative message.
I was actually thinking that the server would generate the full message, rather than embedding the short server error message in the longer frontend message. Then the frontend would just display the server message alone, with a generic fallback if the server doesn't send a message.

Then the server could say something like "The 'python2' kernel is not available. Pick another suitable kernel from the menu, or install that kernel".

There should probably also be a short form, though, because we might want to just show a warning in the notification area, and leave the full message for if the user clicks on it. (I don't like modal dialogs, as you might have noticed ;-) )