IMAP IDLE changes

I was having trouble with this library using IMAP IDLE.  I made some changes to prevent the connection timeout and to keep the IDLE working after receiving messages, but I still would get silent exceptions whenever the server connection would go down (through my testing).  

I changed the library from threads to TPL tasks and added an exception event that a client app can subscribe to and decide what it wants to do (log and attempt to reconnect perhaps).

I also had issues with my service not shutting down cleanly and tracked this down to items in Disconnect() not working quite right - I may have caused these with my other code changes though.

First time putting something up on GitHub, so hope all is okay.

Thanks for the library!