Allow Guava MediaType for Content-Type

This promotes type-safety.  Keep the String interface for unknown
content types.  Also ensure non-null parameters.