Remove unnecessary require statement.

We stopped using WEBrick in cef6a2ca3070c1dde8f0114c44367103f4195d3f.
Use RSpec instead of MiniTest.

This makes more sense, given we're using Jasmine which also uses a BDD-style.
Only instantiate & boot server once for all specs.
Simplify options.js by making use of jQuery.
Rename JS spec with hyphens to match file under test.
Simplify script injection code in background.js

We can avoid the nested calls to `chrome.tabs.executeScript()` by adding the
three scripts as content scripts in the manifest.
Restrict the URLs where the content scripts are loaded.
Add Rake task for zipping up extension source

The resulting zip file can be uploaded to the Chrome Web Store
Developer Dashboard.
Add author to manifest.json

This is an optional field as defined in the [manifest docs][]. I'm not
sure whether it's ever displayed anywhere but I don't think it can hurt
to set it.

[manifest docs]: https://developer.chrome.com/extensions/manifest
Add description to manifest.json

As recommended by the [manifest docs][]. This shows up in
chrome://extensions and, I presume, in the Web Store when it's uploaded.

[manifest docs]: https://developer.chrome.com/extensions/manifest
Provide a keyboard shortcut to trigger the extension page action.

I've set the default to be `Ctrl+E` which is equivalent to `Command+E` on a
Mac, but note that you can change it by clicking the "Keyboard Shortcuts" link
at the bottom of the `chrome://extensions` page.

Note that this keyboard shortcut is only active when the extension page action
icon is visible.
Add icons to the extension

I downloaded the icons from [FreeAgent's SSB page][], manipulated the
512px icon in Acorn with help from @floehopper, created the smaller
sizes and specified them in the manifest.

I've kept the 512px version even though it's not actually used by the
extension.

[FreeAgent's SSB page]: http://www.freeagent.com/support/kb/misc/creating-a-site-specific-browser-for-freeagent
Put the zipped extension in a package directory

I think I prefer this to creating the zip file in the project root
directory.

I've added the package directory to .gitignore as I don't think we'll
want to commit the zipped extension to the repo.
Use `<<` rather than `+=`

I prefer being able to append strings to the array, rather than having
to to add arrays.
Re-generate page action icon from 512px original

I've also created a 38px version that I presume is used for high
density displays.
Only attempt to explain transaction once.

Previously we were allowing multiple attempts to explain the transaction, but
this led to problems where we were appending text, because we'd keep appending
the text over and over again.

I could've tried to fix this by trying to determine whether we'd already
appended the text or not in order to decide whether to append the text.
However, even this isn't quite right, because theoretically the rules could've
changed in between the first attempt and the second attempt and so the message
might be different or non-existent the second time around.

Although it's not ideal, it feels as if preventing multiple attempts is the
best solution for now.
Add permissions to allow rules to be loaded from anywhere

By whitelisting all http and https URLs, we can load our rules from
anywhere, without having to worry about the CORS headers being set.
This allows us to host the rules.json on AWS S3 (e.g.
https://s3-eu-west-1.amazonaws.com), GitHub (e.g.
raw.githubusercontent.com) and GitHub Gists (e.g.
https://gist.githubusercontent.com) to name a few.
Remove redundant permission.

Since we added the wildcard permissions, this permission has become redundant.