Added MessageIdList and updated MimeMessage.References to use it.

MimeMessage.InReplyTo is now only a single string instead of an array.
Fixed up documentation for MessageIdList and DomainList
Disconnect event listeners from the MessageIdList before updating it
Don't forget to connect up the ContentDisposition.Changed event handler after parsing
Only remove duplicates, not all headers. D'oh.

Fixes issue #10
Implemented MimeMessage.set_InReplyTo()
Documented exceptions for ContentType and ContentDisposition
Use ArgumentException instead of FormatException
Allow users to register custom CryptographyContexts
Renamed MimeEntity.RegisterCustomMimeEntity to MimeEntity.Register
Modified Header.ToString() to add a space after the ':' to make it look prettier
Fixed Rfc2047.FoldTokens() to use FormatOptions.NewLine
Updated some docs and removed unnecessary IsInitializing check.
Got rid of another unnecessary use of IsInitializing
Bumped version to 0.9.0.0
Replaced custom constructor delegates with the use of reflection

Hopefully developers will find this to be a simpler, cleaner approach.
Fixed Multipart.ctor(MimeEntityConstructorInfo) to initialize children
Implemented support in MimeParser to generate MimeParts that use substreams of the input
Fixed MimeMessage.MergeHeaders()
Improved persistent stream parser test