Switched from Django templates to Jinja2 templates.
Created separate URL namespaces for runner (Jasmine), dependency, and
suite page files.

Refactored suite_server to use regex matching to figure out
which page to serve for each URL pattern.
Server now serves dependency files relative to the suite description's
root directory, not the current working directory.
Added MIT license information to Jasmine dependencies.
Implemented SuiteRunner

Implemented SuiteRunnerFactory

Now runs the tests for all defined browsers.

Implemented Browser (Splinter Browser wrapper)

Added Splinter requirement
Added custom Jasmine reporter to output JSON to the test runner file.
Updated test runner template to use JsonReporter.
Changed parsing of JSON to strict=False and used Element.html instead
of Element.text to deal with newline issues.

Changes to the SuiteRunner, SuiteRunnerFactory, and Browser
to ensure that all the pieces communicate consistently.

Terminate browser sessions when tool finishes (even if error)

Exit code indicates success/failure of the entire test suite.

Lettuce test modifications and improvements.  The tests are still
not passing, but most of the required changes are to the data the tests use.
Updated how JS dependencies are loaded to allow for
relative paths to have the same name for different
test suites.  Each test page now loads dependencies
from its own test suite.

Browser now verifies the results it gets from the test runner
page and munges the keys to make them more Pythonic
Console report lettuce test now passes.
Changed Jasmine test reporter to print a message instead of
the stack trace, since the stack trace contained HTML tags
that were causing parser issues.
Changed protocol version to HTTP 1.1 for server
Made browser list a command line argument instead of a part
of the test suite description.

Temporarily disabled lettuce tests to get a clean build in travis
Moved browser code into a separate module.
Now instantiates one test runner instead of several.
Refactored console template rendering.  The context now includes
more information, which can be re-used in HTML report rendering.
Fixed a JS syntax error that was causing PhantomJS to refuse
to load the fixture suite page.
Added better error message for PhantomJS failures
Added exception handling for invalid browser name lists
passed to SuiteRunnerFactory.

Implemented coverage reporting; unit tests all pass.
Implemented Coverage XML reports
SuiteRunner now uses environment variable to find JSCover JAR.
Lettuce tests now use correct path to JSCover JAR.
Changed endpoint for coverage data posted back to the server
to reflect what JSCover actually does.