The library also has some points of extensibility, by handling the 'EventHandler<CursorPaintEventArgs> CustomDrawCursor' event.
By handling this event, the developer can choose to extend the default behaviour by running the DrawDefault method on the CursorPaintEventArgs
instance (1-2).

IProgressCursor also implements IDisposable, which makes the 'using' statement valid on this interface. The advantage is that no custom
exception handling has to be done to ensure the End() method is called on the ProgressCursor. An example of the usage is found in 1-3.

If one wouldn't implement the cursor change like this, the cursor could 'hang' and stay 'WaitCursor'. To avoid this Try Finally coding style,
I implemented IDisposable on the IProgressCursor like this (2-2):