Abstract out Accept* values

- Allow easier fetching of type/subtype for mimetypes and languages
- Allow mimetype params (aka accept params)

I'm not happy with some of this, specifically (but not limited to!):

- The way I figure out which value class to use
- The way ->getMedia() and the like return false
- The way __toString() vs ->getValue() work on the value objects; I wanted a way to do what was expected vs getting back the proper value. e.g. with mimetypes, you often want to do: if ($mimetype == 'application/json'), but when you're wanting to output the mimetype, you'd want the q-values and other parameters.