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.
My Python roots are definitely showing when I say this, but I think switch/case is really ugly and at best no better than using if/else, especially because of the necessity of having `break` statements in every case.
![screen shot 2014-08-15 at 1 39 23 pm](https://cloud.githubusercontent.com/assets/682761/3935560/b044287e-2496-11e4-8997-56d9ef64942d.png)