Wip/merge upstream

These are a bunch of fixes and new features from upstream. I had to massage several of them, and had to re-implement a couple. I tried to keep attribution wherever I could.

New features:

* Allows one to set a custom per slide background
* Adds gherkin syntax highlighting
* Adds support for the Kramdown markdown engine
* Allows one to set markdown engine configuration options in `showoff.json`