Add matching capabilities to the Content-Type header

This pull request adds the ability to `match()` a `ContentType` header against one or more mediatype specifications. As an example, for a Content-Type of "application/vnd.foo.v1.status+json", each of the following would successfully match:

- `*/*`
- `*/*+*` (essentially the same as above - full wildcard)
- `*/*+json` (wildcard, only matching mediatypes with the format "json")
- `*/json` (subtype matching format)
- `*/vnd.foo.v1.*+*` (partial subtype wildcard with wildcard format)
- `*/vnd.foo.v1.*+json` (partial subtype wildcard)
- `application/*`
- `application/*+*`
- `application/*+json`
- `application/json`
- `application/vnd.foo.v1.*+*`
- `application/vnd.foo.v1.*+json`
- `application/vnd.foo.v1.status+json`