[refactor] use a namespaced exception for each SPL standard Exception used
[refactor] use a namespaced exception for each SPL standard Exception used
[refactor] [comment] make EventNameNotUniqueException and UndeclaredEventException subclass LogicException direclty instead of InvalidArgumentException; ocd comments
[refactor] mark all base Exception classes abstract and rename them accordingly