'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
Maybe have the ScrollManager constructor take an options dict as the second argument. This way if different scroll manager subclasses have other options, we have a uniform way of passing them.