Custom Events Support: Allows behaviors to emit custom events

Adds `Essential.Behavior#emit` to the base behaviors, allowing to emit
events with ease.

This function is fully configurable and have sensible defaults
detailed in the event documentation