Implement content negotiation

This PR adds the following functionality:
  - ``algorithms.select_content_type``
  - ``datastructures.ContentType``
  - ``errors.NoMatch``
  - ``errors.RootException``
  - ``headers.parse_content_type``
  - ``headers.parse_http_accept_header``

The primary function is `algorithms.select_content_type` which is an RFC 7231 compliant implementation of _Proactive Content Negotiation_.