Support per-slide centering

If config.center is false, this change centers slides with the
'center' class.
apply @knownasilya's first slide detection fix to dev branch #671
contrib update
merge vertical centering for individual slides
Merge branch 'dev' of github.com:hakimel/reveal.js into dev
Add attributes in markdown for slide generation.

By default, look for <!-- slide-attributes: xxxx -->.
Whatever 'xxx' is will be added to the section attributes.

You can define your own pattern with 'data-attributes'.
For instance 'data-attributes="^\s*?-- (.*?)$"':
that will be added to the options.

The 'attributes' section is removed from the content of the slide,
so the final markdown doesn't reflect them.
That also means you can add those attributes *anywhere* in the slide

But that allows for *any* attribute to be added for a specifc slide,
like:

- id="plan", for allowing internal link (issue #430)
- data-background="#ff0000"
- data-transition="fade"

You list those attributes on a single line, like

- (default):
` <!-- id="plan" data-background="#ff0000" -->`
- or, with an alternative data-attributes pattern:
` -- id="plan" data-background="#ff0000"`

Again, that line is remove from the final content.
Fix bug on data attributes for first vertical slide.

The first slide of a vertical stack see some data attributes ignored.

Mainly the data-transition one.

Repeat all data-attributes on the wrapping section element.

Ignore any other attributes (like 'id="xxx"'), in order to not
mess with internal links (by repeating twice an id).
Make sure a pattern doesn't include space.
Fix markdown vertical wrapping section element generation.
Rebased on dev, and following contribution guideline.
Fix markdown.js slideAttributesSeparator selection.
Add QUnit.js unit tests for attributes in Markdown slides.