Refactored event system & IO modules

Thinking about further abstraction of modules.
Maybe it isn't even necessary to specify whether a module is
an EventListener or an EventEmitter but enable them to be both.

This would simplify eva's core structure massively.