rework event polling to add support for kqueue
kqueue expects None for no timeout
eagain value is different on OSX to Linux
experiment with adding osx to travis
use EPOLLET to avoid infinite spin
update ticker example to use lxml
wip; what a mess!
investigate replicating EPOLLET with kqueue
sweet, KQ_EV_CLEAR looks to be equivalent to EPOLLET
bring back recv loop
bring back eagain support for fd writes
seperate poll into it's own module; rework error/hup handling
continue to clean up file descriptor IO
add a test for reader close
remove old test
pull exceptions and message passing primitives into their own modules
add a decorator to serialize access to a callable