Essentially a copy constructor.
         Type.from_mime_type(plaintext)
        is equivalent to:
          t = Type.new(plaintext.content_type.dup)
          t.extensions  = plaintext.extensions.dup
          t.system      = plaintext.system.dup
          t.encoding = plaintext.encoding.dup

def from_mime_type(cls, mime_type):
        """
        Essentially a copy constructor.
         Type.from_mime_type(plaintext)
        is equivalent to:
          t = Type.new(plaintext.content_type.dup)
          t.extensions  = plaintext.extensions.dup
          t.system      = plaintext.system.dup
          t.encoding = plaintext.encoding.dup
        """
        mt = cls(deepcopy(mime_type.content_type))
        mt.extensions = map(deepcopy, mime_type.extensions)
        mt.url = mime_type.url and map(deepcopy, mime_type.url) or None
        mt.system = deepcopy(mime_type.system)
        mt.encoding = deepcopy(mime_type.encoding)
        mt.docs = deepcopy(mime_type.docs)

        mt.is_obsolete = mime_type.is_obsolete
        mt.registered = mime_type.is_registered
        return mt