generalize an event bus concept and implement for Kinesis

* factor event pushing and consuming within engine into EventBus
* implement unpersisted event handling as NaiveEventBus
* add aws-java-sdk dependency, update NOTICE with transitive deps
* implement KinesisEventBus which uses an Amazon Kinesis stream for durability
* annotate Event ctor to allow deserialization from JSON