Adds custom event support

This adds custom events, combined with a BaseEvent in the API.

The BaseEvent class is ASM modified, so that it extends the forge Event class.