running this test, make sure that the PrototypeHelper
class is defined. This should work well as a test.
If we want to make sure this is tested, there is a
prototype-rails gem that can be required beforehand.

Both of these are required to run the tests during
development. Since there isn't a Gemfile for this
project and I can't find where the development
requirements are, I am assuming this is the right place
to put this.

Backtracking in the SCSS parser when deciding between a declaration or a ruleset
was taking way too long. When an expected token wasn't found, the parser
constructed the full exception, which involved parsing the template for the
error message. This parsing was O(template size), leading to nesting-heavy
templates approaching O((template size)^2).
The new approach makes backtracking more light-weight, at the cost of making
exception-raising even more expensive (a perfectly acceptable tradeoff). When
backtracking is being considered, no exception is raised; instead, Kernel#throw
is used. Since the full error object is unavailable, once the parser knows which
error it wants to raise, it actually moves backwards and re-runs the production
that caused the error in order to re-raise the error.
Closes gh-327

Rather than incrementing an index each time we push, we now impose an
indexing based on the repo structure. The version of the prerelease
gem is defined to be the number of commits since the stable
branch (precisely, the number of commits in `git log stable..master
--first-parent`). This means that when someone `rake install`s Haml
from a Git repo, the gem is installed with the proper version number.