ENH: Represent 3D Frames as scrollablestacks using JS.

I implemented the feature suggested by @caspervdw in #108. As @tacaswell said in #108, I was careful not read that GPL implementation, and so this is completely independent. I'm not sure how it compares in the details, but the general idea is straightforward enough. Does it look about right, Casper?

I made a [simple example here](http://nbviewer.ipython.org/gist/danielballan/9ab4edfe1df0d641b62d). (As usual with notebooks containing JS, you have to run it locally.)

At minimum, this needs docstrings and basic test coverage before merging.
Before calling `_as_png`, check if it data is 2D as below in lines 68-69. This removes the `FormatterError` when I view a 3D image, because it first tries `_repr_png_`, fails, and then continues to `_repr_html_`.