* Switch to using `inotify_init1()` and add `inheritable` and `nonblocking` keyword arguments to `INotify`, which control the `IN_CLOEXEC` and `IN_NONBLOCK` bits of the flags passed to `inotify_init1()`. Default to `inheritable=False`, which is in line with the Python standard library's behaviour for all file descriptors it opens.
* Make the `delay` argument passed to `INotify.read()` only delay reading if there were no events to read initially, rather than unconditionally. An unconditional delay can rate limit a program that is struggling to keep up with events, which is undesirable.
* `INotify()` now subclasses `io.FileIO`, which simplifies things a bit - `INotify.close()` for example is inherited rather than implemented in the `INotify()` class. `INotify.fd` is now just an alias for the inherited `INotify.fileno()`.
* Restructure module layout to a single `.py` file instead of a package
* Code simplifications.
This release is backwards compatible with previous releases.