PEP-8

* Import tidying & sorting (stdlib, third-party, local
* Trailing whitespace removal
NeedleTestCase: refactor driver setup to setUpClass

This saves a considerable amount of time by not loading the driver
for every test (50%+ of runtime with 7 tests with Firefox).
NeedleTestCase: enable baseline capture using environmental variable

This allows running with the standard python unittest2 discovery
or even simple command-line usage rather than nose.
Allow browser selection via NEEDLE_BROWSER environment variable

This makes it trivial to do things like this::

    NEEDLE_BROWSER='phantomjs' nosetests -d
Screenshots: store in directories

This allows you to store the baseline and per-run screenshots in
different directories, particularly handy if you're doing something like
storing the baselines in some sort of management system.

Long-term it will make sense to start timestamping runs for historical
archives
Refactored assertScreenshot into a context manager

This allows tests to be written in this style:

    def test_about(self):
        with self.compareScreenshot('body', 'about-us'):
            self.driver.get('%s/about/' % BASE_URL)

along with the traditional:

    def test_about(self):
        self.driver.get('%s/about/' % BASE_URL)
        self.assertScreenshot('body', 'about-us'):

The difference is that the former case can be significantly more
efficient when recording baseline screenshots as it doesn't require
loading the page simply to declare that an existing baseline will
not be overwritten
Optionally use perceptualdiff

perceptualdiff (http://pdiff.sourceforge.net/) is an image comparison
program which attempts to use computer-vision algorithms to focus on
changes which are visually significant. It's also *MUCH* faster than
the current pure-python image comparison.
Create missing baseline/output directories
Selenium: consistent browser window dimensions

This makes automated comparisons across browsers/environments less noisy
Merge pull request #4 from acdha/combined-changes

Combined changes: refactored helpers, support alternative tools
Allow needle to be used with custom web driver
Merge pull request #8 from treyhunner/fix-extensibility

Allow needle to be used with custom web driver
Move requirements from requirements.txt file
Allow installation of newer requirements
Replace PIL with pillow
Merge pull request #7 from treyhunner/fix-requirements

pip install fails due to missing requirements.txt file