CMS-1989 Refactor all local listeners to be written the same way

Modifications according to jvs comments:
- moved Listener and Observable to api_event package and split into
- extracted every Listener descendant into its own file
- also made interfaces' single methods mandatory