use boost::type_erasure for Measurements
remove extra intermediate Measurement classes
use boost::type_erasure for EndConditions
remove EndCondition typedef
replace IEventGenerator with boost::type_erasure
use boost::type_erasure for concentrations