Remove remaining artifacts of previous API
Major changes focused on provides runtime safety

Raise runtime errors when doing illegal operations on the device list.
Add ability to catch IOErrors and OSErrors, in loop.run() this is
implicitly done.
Monitor gained ability to also return on non-matching reads.
Fixed registry's ability to replace already registered callbacks.
Device's devnode connection gained some safety of closing the fd by
adding a __del__ method.
Simplify the examples by making better use of API

Remove explicit close calls, the close will happen implicitly.
Use register API directly instead of registering on each seperate
device.
Add simple add_device function

This means we do not have to create instances of Device to check if the
are duplicates.
Base list_devices() on match_device()
Use match_device() and create a _handle_read func

Move common read functionality to a single function.
PEP8 add 2 newlines
Remove stray mouse.register() from old API
Return self from __call__

This makes the API even more elegant.
Call start() on the returning obj of monitor()
Update and simplify use of API
Solve nasty exception in __del__

If the class object is removed before the instance is it loses the
abiltity to call it's method. The solution is to check if can find it's
methods before using them.
Add N_EVENTS constant
Try to properly silence __del__ exceptions
Add context manager functionality to class
Add cli submodule and support __main__ calling

The cli module is a reimplementation of the spm program from the
spacemouse project.
PEP8 conformity
Fix monitor module lifetime and add a stop method
Close monitor and devices before program exit

This should fix any occurrences of ignored exceptions in __del__
methods.
Implement grab option including catching errors