Adds envelope concept to track metadata

This allows for metadata to be introduced at a couple of points:
* at publish, by passing metadata to the publish method of the DO
* at session creation (passing metadata to repository load)
Version bump

Breaking changes:
  the #published signature for subscribers has changed to accept a
single paramter, the event envelope, which contains the stream id, event
data, and metadata