Tweak documentation
Use MultiJson instead of JSON directly

Since this gem could be used in an application running under different
platforms and circumstances, use MultiJson as to not load another
JSON handler if the host application is already using one.

* Add JSONSerializer
* Extract superclass from backends to centralize common utility methods
Add builder method on Update
Collapse Features and Cohorts objects into Collection

Since these objects did basically the same thing we're replacing
them with one object that's a generic collection which wraps a
hash table.
Tweak configuration unit test
Move key_for utility method onto subjects
More closely model listen/notify in memory backend

The other backends process JSON that comes through the channel. We were
putting the instance in the collection instead of the backend so its
behavior diverged from the other implementation.

This change introduces a Bus object to represent an in-memory bus that
abstracts the communication between running instances of Switches. This
more closely models how communication happens between instances using
a real-world backend.
Use more descriptive temporary variable names
Get rid of Backend superclass

* Move Memory::Bus out into its own file
* Add Update.load to parse JSON and return a new instance
Add tasks to create and drop postgres table

* Add objects to encapsulate pg operations: Connection and Table
* Add rake tasks for dropping and re-creating tables
Add rspec rake task