Changes test to use is() for better diagnostics on failure
Make sure languages are returned in the form provided, not canonicalized
Share more logic for negotiation

Everything but the media type uses the same shared sub to pick a choice. Media
type is a little weirder so I left it alone for now.

I also made make_choice a private method since it's not documented, and we
really don't want people calling it.