Fix mimetype routing priority.

When an `urlSuffix` e.g. .json is specifed by the user, this should override any supplied `Accept` http headers. The previous method of only iterating once and calling `canFormat()` for each mime type made that impossible. We now have two methods, `matchFileExtension()`and `matchAcceptTypes()` that we can call separately, allowing us
to iterate first looking for url suffixes and if none match, falling back to accept headers.