Pass :bind to Showoff.run! otherwise it only listens on localhost
Added better auth checking

Allows the showoff.json config file to mark paths as protected, so you
can disallow access to "presenter" and "onepage", for example.

If a path is protected, this will check showoff.json for user/password
and attempt basic auth. If user/password are not set, then access is
allowed to localhost or 127.0.0.1 only. If user is not set, then showoff
will use the empty string, so presenters can simply enter a password.
Bump version to 0.8
Merge pull request #61 from binford2k/features/add_authentication

Added better auth checking
Merge pull request #62 from binford2k/version_bump

Bump version to 0.8
Merge pull request #59 from raphink/dev/bind

Pass :bind to Showoff.run! otherwise it only listens on localhost
Default to binding to all interfaces

Newer versions of sinatra default to binding to localhost only.
This extends a pull request from raphink to bind to the passed in host
value, and also defaults to binding to 0.0.0.0, so anyone can access the
presentation.

If you do want to disable external access, simply pass in -h localhost.
Merge pull request #63 from binford2k/features/bind_to_all

Default to binding to all interfaces
Make id default to name if absent
Add a onepage_toc handler
This is a stupid bloody hack of a workaround

I am embarrassed and am less of a programmer for committing this.
However, I am on a plane right now without access to the documentation
to figure out what the hell is going on, and I don't have the time to
design a proper data flow for showoff.

Summary of the problem:

If the `update_special_content` method processes a fragment that
contains an <img /> tag, it will convert it to prehistoric HTML, ie,
without the closing slash. When the HTML parser reparses that fragment
later on, that tag drops it into compatibility mode and HTML
entities are simply discarded.

This means that if you include an image on a slide, then put a code
block after it, the hashrocket (=>) is blown away. Gross.

The real solution is to quit parsing and reparsing the text, but that
will take some rearchitecting and that's not on the roadmap for this
month.

Maybe next.
PE3 changed the output format a bit
Merge pull request #65 from binford2k/update_output_regex

Update output regex
Altered function signatures to take opts hash

This will allow us to be a bit more descriptive about the rendering
options we're passing to the methods instead of just a list of booleans
that happen to be in the right order.
Generate supplemental materials

Fixes #34

This is a somewhat haphazard fix, in my opinion, but doing it in a
better way requires refactoring request routing. That needs to be done
soon, very very soon, but that day is not today.

To use this, simply add a slide with the classes of 'supplemental' and
whatever type of supplemental material it is.

For example:
  <!SLIDE supplemental solutions>

This can be included in the same file as the labs, so this means that we
can make each lab, its corresponding guide page, and its solution all
self contained.

To access the supplemental materials, simply browse to:
  http://<host>:9090/supplemental/<type>

For example:
  http://localhost:9090/supplemental/solutions
Added section autonumbering

Added special tags for automagically including counters
* `~~~SECTION:MAJOR~~~` translates to section counter
* `~~~SECTION:MINOR~~~` translates to auto resetting in-section counter

This means that we can now replace our Lab/Exercise/Solutions headers
with macros, such as:
* `# Lab ~~~SECTION:MAJOR~~~.~~~SECTION:MINOR~~~: Lab Title`
Source highlight in onepage views

Fixes a longstanding showoff bug in which the sh_highlight js files
didn't get loaded properly.
Added file inclusion tag

Include a tag like `~~~FILE:fundamentals-4.1-solution.pp:Puppet~~~` and
it will be replaced with the contents of that file, wrapped in the
proper HTML to display it as code, syntax highlighted with the classes
provided. The general case is these two forms:
* `~~~FILE:<filename>:<space separated list of classes>~~~`
* `~~~FILE:<filename~~~`

Please note that this currently has a bug in which the tag replacement
happens AFTER the markdown parsing. It should happen first, but that
alters the DOM in a strange way that I need to debug first.
Fixed the markdown parsing order bug

Reordered some of the logic so that it was more readable and then it
was obvious where the mixup was.
Removed a misleading comment