Add PhantomJS webdriver gem and spec outline

This commit sets things up for future
feature specs by adding the Poltergeist gem,
making a directory for feature specs, and creating
the first feature spec file.
Add helper function to turn off transactions for some specs

When using poltergeist to run feature specs with PhantomJS as the
driver, the default RSpec transactions don't work.  In order to
create test data in the database to prepare for specs, and to clear
that test data after the specs run, a helper function sets up and
then removes custom configurations for handling the test database.

The helper method relies on the 'DatabaseCleaner' gem for manually
handling the timing and method of cleaning the test data out of the
test database.

This should have no effect on existing specs where the helper method
is not called.
Add feature specs for movement keyboard shortcuts (j, k, gg, G)

The keyboard shortcuts 'j', 'k', 'gg', and 'G' all either place and/or
move the focus on a page with multiple focusable elements.
This spec adds testing of those keyboard shortcuts in the context of
two different pages on the site, running with the headless browser
PhantomJS.  This is part of implementing feature specs for
keyboard shortcuts in general, to make future refactoring of the
related JavaScript easy to do without breaking the application.

Potential Issues:
 * The feature specs run a bit slower than the other specs because they
 use custom configuration which cleans the database with truncation.

Next Steps:
 * Write specs for other keyboard shortcuts.
 * Refactor the JavaScript fearlessly!
Add patch to allow testing `click` in JS with phantomJS

PhantomJS does not support a native `click` method for HTMLElement.
Adding a patched version of this allows the JS feature specs to
execute `click` without overwriting the `click` method that is
available when running the code in modern browsers.

Without this patch, a call to `click` in the JavaScript will cause
specs to fail with a `undefined is not a method` error.
Add specs for shortcuts to open selected items and move up menu tree

Specifically, adds specs for the "o"/"enter" and "u" shortcuts.

Issues:
 * This group of specs relies on shared_examples_for, and the messages
 produced by the deep nesting of contexts and the sharing of examples
 are not as clear as they could be.  Could be restructured in the
 future.
 * Again, these specs may use the movement keyboard shortcuts to place
 focus in order to trigger the opening of a focused item.  This
 depencency of one spec on another is not so bad, since these are
 integration specs.
Tidy up specs and spec helpers

These changes DRY things up and make them a bit more readable.

The helper method for dealing with transactional fixtures
(defined in the `spec_helper.rb`) was converted to use an RSpec tag.
This means that instead of wrapping all specs in an extra block,
we can just tag the outermost description block with
`:without_transactional_fixtures` to be true.

Similarly, there were tags for `js: true` on every example spec,
and that has been DRYed out by moving the tag to the outermost
description block.

Lastly, helper methods defined within the `keyboard_shortcut_spec.rb`
have been moved to the bottom.
Add specs for "[" and "]"

In order to write specs for shortcuts dealing with snapshots and
sweeps, a new trait was added to the sweep factory to generate
a sweep with a full set of associated snapshots.

These specs revealed a minor JS error that was not breaking
functionality, and is fixed in a separate commit.
Fix trivial JS error with sweep pager buttons

In Safari (and by extension in PhantomJS), clicking a link that
has `javascript return false;` triggers an error.

This error had no effect on functionality, but was causing the new
feature specs for the "[" and "]" shortcuts to fail.  Changing the
links to simply return nothing allows the same functionality with
no javascript errors.
Add final keyboard shortcut specs (for 'a', 'r', and 'x')

The final section of keyboard shortcut specs covers the shortcuts
for navigating, accepting, and rejecting snapshot diffs.

In order to have the links for `Before` and `After` views of a
snapshot diff in the test data, an `image_width` property was added
to the `snapshot_diff` association on the `snapshot` factory trait
of `with_diff`.

In other words, when the snapshot factory is used with the `with_diff`
trait, it will now generate snapshot diffs with images that have an
`image_width` property and return `true` for `sprite?`.

Branch Summary:
This is the final commit in a branch that adds specs for all the
current keyboard shortcuts.
In order to add these feature specs, the early commits add `Poltergeist`
and some custom configurations for RSpec and Capybara.  The specs run
with PhantomJS, which emulates using something like Safari to click
through the site.
Improve coding style and remove duplicate spec configurations

This commit deals with a series of minor rewordings, style improvements,
and other improvements.  It is a response to comments on the pull
request.

The largest change was renaming the `uses_after_commit` tag to be
`without_transactional_fixtures`, and removing the duplicate version
of this tag.
Merge pull request #110 from flarnie/testing_keyboard_shortcuts

Testing keyboard shortcuts