Ruleset updating mechanism to fetch, verify the authenticity of, and apply new ruleset databases

This pull request contains all of the commits I (Zack Mullaly) have made over the course of the Summer of 2014 to build a secure ruleset updating mechanism for my Google Summer of Code 2014 project.
There are still some details (such as a public key) that need to be filled in by whoever now is the primary maintainer of the project, but the feature should be functional once the TODOs are taken care of.
I don't like the idea of manually parsing the version string. Trying to do so could lead to problems in certain edge cases, and I'd rather use the existing version comparator. We could also change update.json to have "version" be a proper subversion of the extension (e.g. 5.0development.0.1). This way, no manual parsing needs to occur, and we can say that a newly downloaded ruleset described as being version V is new and applicable iff:

    compare(V, extVersion) > 0 && compare(rsVersion, V) < 0

Which is to say, V is greater than the current extension version and the current ruleset version is less than the new one.

This test would also pass if a ruleset version like 6.0.0.1 is released and downloaded by an extension with version 5.X.Y and ruleset version 5.X.Y.Z, which is not what we want unfortunately.