Added EventViewModelBase<'a> and IEventViewModelPropertyFactory

Reworked internal design slightly to allow EventViewModelBase<'a>