Add logic to cancel interests for ready operations

Fixed an issue which caused events to being raised multiple times, and
on occasion, throwing CancelledKeyExceptions
Refactor for better concurrency

Better event loop and created tasks for future execution.