add a generic Type with a user-defined literal
use generic Type instead of unsigned long for EventType and ComponentType
Merge branch 'feature-types' into develop
update copyright year