'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
That's a detail of the keyboard manager, I think passing itself in to each handler would make sense.  I think there are a few places where we that=this in the keyboard manager.  Agreed, it'd be nice to get rid of that if anything just to clean up our code internally.