feat(HTTPError): Support custom media types for error responses

This patch adds support for serializing errors to other media types
besides the generic JSON and XML formats. It does this in two ways:

1. The default serializer will check for a '+xml' and '+json' suffix
   in the media type requested by the client, and if present, serialize
   to XML or JSON, respectively. This was thought to be better than
   simply returning an empty body in the response.

2. The default serializer can now be overriden with a custom
   serializer function, which affords complete control over the
   error serialization process.

Closes #265
Merge pull request #335 from kgriffs/issues/265

feat(HTTPError): Support custom media types for error responses
perf(Request): Don't normalize CONTENT_* headers

Rather than always normalizing these headers up front, this patch
simply uses the names as they already exist in env. It was found
that this makes Request.__init__ take slightly less time to execute.

Issue #261
perf(Request): Misc. minor performance enhancements

This patch contains a variety of minor performance enhancements for
the Request class. In the course of making these changes, behavior
of empty strings given for headers was changed to be more strict.

BREAKING CHANGE:
    If a header is given in the WSGI environment, but has an empty
    value, the falcon.Request convenience method for accessing that
    header will not raise InvalidHeader instead of simply returning
    None, since this condition is exceptional.

Issue #261
perf(uri): Speed up uri.parse_query_string

This patch shaves some microseconds off uri.parse_query_string by
switching to using a combination of str.split and str.partition.

Closes #261