Snapshot keys

Added the ability to add a method to entity classes
'entity_store_snapshot_key' to check the validity of previously taken
snapshots when using the MongoEntityStore.

Example:

    class MyEntity
      include EntityStore::Entity

      def self.entity_store_snapshot_key
        1
      end
    end

When hydrating an entity, if this method is defined, the snapshot will
be inspected to ensure its key matches the one found against the
entity's type. If it does not match then the snapshot is ignored and all
events will be replayed.

This is intended to make it easier to release changes to your entities
with zero downtime as if you make a change that makes your existing
snapshots invalid, you can alter its entity_store_snapshot_key and they
will be ignored.
Merge pull request #12 from adambird/snapshot-key

Snapshot key