is_complete messages

This is the underlying machinery necessary for a console interface in the HTML UI, and more generally for console like interfaces to support multiple languages.

The problem: when the user types some code and presses enter, the console needs* to determine whether that code is ready to execute, or whether a continuation prompt should be generated. At present, we determine this in our console frontends by running a copy of the inputsplitter machinery, but that's specific to Python code, and it can't practically be implemented in Javascript. We should instead determine this by querying the kernel, which is what this PR makes possible.

(* We've previously debated whether this is a feature of console-style UIs, or a limitation of terminals where we can't give the user different key combinations to make the difference explicit. I believe that it's a feature, and the fact that we implemented this behaviour in the Qt console, where we can and do distinguish shift-enter/ctrl-enter, supports this)

This does not switch any frontends to use this new machinery. It adds the messages, and the handler within the IPython kernel.

Open questions:

* Naming
* Should the reply include hints about indentation?
`source` param needs documenting in docstring.