Resolve issue #7482 by removing the ability to create a new event manager.

A search of hackage showed that all packages that use this module (which is considered private to GHC) do not use the 'new' function.
Remove functions to step the system io manager in preparation for parallel io manager changes.

These functions are considered GHC-private and are not used by any packages on hackage.
Minor refactoring in GHC.Event.Thread to prepare for supporting per-capability IO managers.
Refactor by introducing a boolean argument to newControl to determine
whether the files created for a Control instance are registered with
the RTS IO manager hooks.

This change makes no functional changes. It simply prepares the way
for supporting multiple IO managers, we want to control which one is
registered with the RTS.
Separated the IO manager into a timer manager and a file IO manager.

This is a preliminary patch; ultimately the single file IO manager will be replaced by per-capability managers.
Specialized the TimerManager by removing the file monitoring support.
Removed control registration flag from Manager and TimerManager new functions.

The timer manager always registers its control instance with the RTS hooks while the file io manager does not.
Removed timer related features from Manager.

The timer related features have been moved to TimerManager.
Use one IO manager per cap.

This patch assumes the number of capabilities is fixed at startup time.
Lock stripe the callback table in the IO managers.
Added support to backends for non-blocking poll() call.
Modify per-capability IO manager poll loop to avoid blocking (and context switching the OS thread) when the poll loop is heavily loaded.
Allow backends to provide a command that register interest for an event source for exactly one event, and implement epoll implementation of this command.
Apply the epoll backend design (separate polling from registration) for the KQueue backend.

This design follows Kazu Yamamoto's implementation for KQueue.
Added support for modifyFdOnce for the KQueue backend.
Minor refactoring to simplify unregisterFd_ in Manager.
Refactor to handle activity on control files as special case.

This change makes the upcoming change to have the callback unregister the file easier.
Manager takes a flag that indicates whether it should de-register a file registration once it has received a callback.

Previously, GHC.Event.Thread.threadWait calls unregister on the file in the callback. With this flag on, the manager now performs the deregistration so that GHC.Event.Thread.threadWait does not have to. The motivation for the change is that for the common case that we deregister after receiving the callback, we can provide a more efficient implementation which reduces the number of times the callback table lock is taken in half and also reduces the number of sysystem calls we make to the backend. This commit does not implement that optimization; it just paves the way for this change in future.
Minor clarification in registerFd_.
Minor simplification of calculation of new and old events in registerFd_.