Don't use epoll on regular files

epoll doesn't work on regular files. Calls to epoll_ctl return
an error of EPERM. I work around this by detecting this case and
keeping track of those file descriptors (using an fd_set). These
are manually added to the result of a select call as if they were
valid to read/write.

A longer term solution would be to call 'select' on these file
descriptors. Even better might be to move to using asynchronous
IO functions (AIO or linux equivalent) on regular files but this
is only compatible with epoll on later Linux versions. This needs
investigating. Another possibility is using OS threads for i/o.