Reveal converter

Abstract
-----------

This PR implement a new option in nbconvert to output a html-slideshow based in the [reveal](http://lab.hakim.se/reveal-js) javascript library.

Introduction
----------------

The publication of computational results through the **IPython Notebook** have gained a lot of interest in the scientific python community. **nbconvert** provides multiples output formats to distribute the IPython notebook content, even there is a web app service to automate the process of publication.
However, up to now there is a lack of a slideshow output format, a static html presentation tool (we have to mention that there is **live** slideshow mode in the current developing version of IPython).
So, we proposed us to implement a slideshow output format for nbconvert based in a html presentation framework called **reveal.js**.

Implementation
---------------------

Some backgroud:
- **reveal.js** is a library that provides easy features to integrate markdown written slides in the html code (through **data-markdown**, you can see the details in the reveal.js documentation).
- **nbconvert** have a specific option to output a mardown-based document.

So, the main idea was to link this two features to get a functional implementation to provide a new output format: **reveal** (a html slideshow)
To achieve this, we have written a new class called ConvertedReveal inherited from ConvertedMardown. This new class overwrite some methods from his parent and write new ones, such as the main def build_slides method:

- **def build_slides**, to build the slides from metadata associated to a list that contains the cells from the notebook. This method also add specific html tags to **encapsulate** each slide to be rendered properly by reveal.js. 
The delimiters of the slides are metadata tags that can be specify by the user trough a UI provided by @Carreau in his current metaui branch [link](https://github.com/ipython/ipython/pull/2333#issuecomment-11163680):
1.    New section (to get horizontal slides.
2.    New subsection (to get vertical/nested slides).
3.    New fragment (to get fragments inside each slide)

We also have get the reveal.js framework trough a submodule.

Results
----------

To test this new **reveal** option in nbconvert you can checkout to the branch slider_converter in the repository in the following link: 
https://github.com/damianavila/nbconvert.git
Then, you have to init and update the submodule to get reveal.js library:
git submodule update --init

In this repository, we also provide a example_slide.ipynb to perform some testing of the new described features.

**Usage**: $python nbconvert.py -f reveal example_slide.ipynb

Then you can open the resulting html slideshow with any new browser (with Chrome you can render well printed pdf document from your slides). You have to open this html file in the same directory where it was generated to achieve properly the reveal.js machinery.

You can see a live slideshow here: http://www.slideviper.oquanta.info/nbcreveal/example_slide_slides.html
Also, you can also see this new functionality in the following video: http://www.youtube.com/watch?v=mNEAJvFDneE&feature=g-upl 

Problems
-------------
- Mathjax crush in Chome when you use **default** o **concave** transition (it is a browser-dependent bug currently discussed in a reveal.js issue).
- Use ?print-pdf query in **linear**  transition (the default one in this configuration of reveal.js) because some other transitions will give you pdf slides rendered with "shadows".
- Fragments are unable to render markdown (I have open an issue in the reveal project to resolve this problem)

Conclusion
---------------

We have achieved an easy and simple implementation of a static html slideshow based in reveal.js library. 
We use metadata from cells to delimit the slides to be unified with the behaviour of the **live** slideshow option currently being developed in the IPython main project. 
There is a lot of work to do to enhance this feature or even rewritten to test other possibilities.

We are waiting for your reviews and criticism.
Regards.

Damián.