Arbitrary resource types - API extensions

To allow extensible support for handling arbitrary file types, instead of
hardcoded Har(Resource), this adds two changes to the API:

* The Resource interface is extended with a mimetype that allows analyzers to
  determine whether they can handle and/or are interested in a Resource.

* The Resource Recognizer interface is introduced to support a pluggable type
  recognition strategy in much the same way as the existing analyzers.
Arbitrary resource types - base implementation

Replace hardcoded instantiation of JarResource in RepoIndex by a
loop that consults all available recognizers, similar to how the
analyzers are consulted.

Added default implementation for a Recognizer, that recognizes
bundles, jars and (some) base IANA media types, and an Analayzer
that tries to determine generic identity capabilities based on
filename for non jars (as a fallback).

Modified registration of existing (bundle) analyzers to not
consider mimetypes they can not handle.
Arbitrary resource types - Metatype Recognizer & tests

Added a recognizer for metatype files and some basic tests in line
with the existing ones.