Reduce memory usage by 2/3 by using cut down mime type implementation

Mail uses the mime/types gem, but uses only a tiny portion of it.
Unfortunately, the mime/types gem has a huge memory footprint.  This
replaces the use of mime/types with an internal library that implements
only the parts of mime/types that mail uses, which are:

* Determining whether a content type is binary or not, to allow
  guess_encoding to determine 7bit or binary.
* Guessnig the content type based on a filename, if a content type is
  not explicitly specified.

This adds a copy_mime rake task, which will use the mime/types gem and
pull out only the information needed for the parts that mail uses, and
stores that cache in lib/mail/mime_type_cache.rb.  This way if
mime/types adds types, it's easy to rebuild the cache.

To limit the amount of memory used, the mime types are stored as one of
the following two classes: Mail::MimeType (if 7bit) or
Mail::MimeType::Binary (if binary).  Each just stores the content type
as a string.  Separate classes are used so that each instance doesn't
have to store whether it is binary or not, which saves memory.

This is currently just a proof of concept to get feedback, more
documentation should be added before merging, at the least.

The 2/3 reduction in memory was taken from these numbers:

ruby RSS in KB:
without require mail:       6204
with require mail, before: 28860
with require mail, after:  14452
I don't think this could be contributed back to mime-types, at least not without major changes.  Considering this is tailored specifically to mail's use case, I highly doubt it would be accepted upstream.

I don't think this is necessary related to the release process.  Because the compiled files are contributed to the repository, they only need to be updated if there are updates in mime types.

The copy_mime rake task could certainly break with updates to the mime-types gem, but it should be fairly easy to handle manually in that case.  The task only needs to be run when you want to regenerate the mime type cache, which should be fairly infrequent.

In terms of file or variable naming, they could definitely be improved.  This was just a quick proof of concept to make sure you are OK with the idea. I will certainly improve the naming and add documentation if you want to merge this.  Hopefully I'll have time to get to that this weekend or at RubyConf.