'Paul' scroll feature

@ivanov requested something like this at PyData2014 conf.  Later @ellisonbg and @fperez liked the idea.  Adding a scroll manager may be over-engineering, but I wanted to open a PR to discuss adding this functionality to master.

### What is this?
This PR replaces the default `space` to scroll down and `shift-space` to scroll up behavior with an intelligent, animated scroll.  The intelligent scroll will scroll to the nearest `slide` cell if slide cells exist on the document.  If slide cells don't exist, the scroll behavior is similar to the browser's default (scroll up one page length or down one page length), except it's animated.  The animation defaults to a quarter of a second and is configurable by `IPython.scrollmanager.animation_speed = 250;`.

This PR also exposes the slideshow flags in the DOM as cell classes so you can style slides (like adding padding above slide cells).  i.e. `div.cell.slideshow-slide`

### Why?
This feature is useful for tutorial-like presentations, where one wants to present the notebook in the notebook's GUI instead of the full blown reveal slideshow GUI, but wants to be able take advantage of the notion of "slides".

\#longflighttomississippi
Side question, all handler here are supposed to use a closure (`that`) to access the notebook. How do you expect to do that in custom handler ? shouldn't handler be passed `that` for easier configuration ?