Merge pull request #9 from AntonGordienko/master

Turn on XOAUTH2 authentication and fix bug.
Fixed code formatting
Fixed ImapClient Unit Tests to not try to authenticate via XOAUTH2
Improved logic in unit tests
Modified Pop3Stream to avoid calling ReadAhead() if not needed

This doesn't change overall logic, it just makes it easier to debug.
Modified Pop3Stream.Read() to keep reading data until we fill the buffer (or EOF)
Code cleanup suggested by Visual Studio's Code Analysis feature
Implemented proper Dispose() pattern, fixes an issue discovered by Visual Studio Code Analysis
Renamed FlagsChanged[EventArgs] -> MessageFlagsChanged[EventArgs]
Code cleanup and renamed ImapCapabilities.MetaData to ImapCapabilities.Metadata
Modified ProtocolException and ImapCommand/ProtocolExceptions to be serializable
Split Pop3Exception into Pop3ProtocolException and Pop3CommandException
Improved Imap*Exception documentation
Split SmtpException into SmtpProtocolException and SmtpCommandException
Regenerated documentation
Fixed SmtpClient unit tests by adding back the RSET command for a failed Send()
Serialize and deserialize the SmtpCommandException data
More exception stuff
More exception fixes
Reorganized Pop3 Unit Tests