Major refactor and introduction of a factory to get instances of the event object.
the measurement protocol version is now a constant in the app. If the protocol changes there will need to be updates to this assembly anyway. No sense trying to force the consumer to pass this data.