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
So, I like this a lot.  I have a few questions. Hopefully they make sense because I'm a little tired:

- Do you think this is something we would want to contribute back to mime-types?
- How do you see running this task fitting into the release process?
- Any concerns about future breakages with this code and future versions of the mime-types gem?
- Any particular reason you called the cache file 'mime_type_cache.rb' when what it really does is re-open the `Mail::MimeType` class and set instance variables for the mime type dictionaries you're generating?  Did you consider a different name or structure? I understand why it is this way, but I feel like it may be better to put the file in `mime_type/cache.rb` so that it is more obvious that it is a dependency of `mime_type.rb`.
- Would you be opposed to improving the variable naming here a bit?

I started trying to figure out the details by comparing the code with the output and what's in the mime types library, but didn't finish because I started losing confidence I was understanding it. (I didn't try it in the console.)

```plain
types -> mime_types
t -> mime_type
t -> extension_index
k -> mime_type
vs -> [simplified_mime_type_name, mime_type_name] # variants
f -> file
```