reorganizing code prior to snapshot refactor
move responsibility for append to aggregate
refactors aggregate into event_stream and snapshot
adds sub_key to snapshot key and event_store

* snapshot now uses compound key (fqn:sub_key) which allows us
  to track events that occur in multiple zones
changing zone_number to sub_key
removes event_appender
Merge pull request #25 from nexiahome/78876656_refactor_snapshot

78876656 refactor snapshot

[Finishes #78876656]