Skip exceptions

This PR implements a way to skip over exceptions when running codecells in a notebook, as discussed in https://github.com/ipython/ipython/pull/4993 by @astrofrog. This is a rebase of the two core files, adds documentation and a JS test.

The Javascript code to run all cells in a notebook while skipping exceptions then looks like this:

```Javascript
for (var i=0; i < IPython.notebook.ncells(); i++) {
    IPython.notebook.select(i);
    var cell = IPython.notebook.get_selected_cell();
    cell.execute(skip_exceptions=true);
    }
```

Will this do what is expected 100% of the time? Based on my (not very deep) understanding of how this works, the kernel will just drop all other messages in the queue if there is an error, so there could be a race condition where the second execute request is not received until after the first one is processed I think (is this right @minrk?)

Perhaps a good test for this would be to add an additional test where you run both cells without `skip_exception` and then make sure the second one wasn't run.