Refactored MimeParser to use the MimeEntity class type to decide how to construct it

This is the first step toward making it possible for developers to
write their own MimeEntity subclasses and have the parser use them.
fixed indent
Implemented a way for developers to register custom MimeEntities with the parser.
Merge remote-tracking branch 'jstedfast/master'
LINQ-like fluid constructors and simple test