chore(HTTPError): Clean up 405 and DRY has_representation model

This patch modifies HTTPMethodNotAllowed so that it no longer supports
adding details (since it is not common/idiomatic to return a body with
HTTP 405 responses).

BREAKING CHANGE:
    HTTPMethodNotAllowed no longer supports setting a title or
    any other HTTPError kwargs.
doc(falcon.exceptions): Clean up docs

This patch implements the following:

    * Use "e.g." instead of "for example"
    * Document class names in the reference docs under falcon instead
      of falcon.exceptions
    * Add the NoRepresentation mixin to the reference docs
feat(falcon.exceptions): Improve HTTPInvalid* and HTTPMissing*

This patch cleans up HTTPInvalidHeader and HTTPInvalidParam, and adds
two additional, distinct classes to use when the header or param is
missing altogether.
chore(testing): Run tests/benchmarks on PyPy3
Merge pull request #345 from rouge8/pypy3

Run tests/benchmarks on PyPy3
Merge pull request #343 from kgriffs/chore

Clean up error classes
refactor(HTTPError): Rename "raw" method to "dict"
chore(CONTRIBUTING): Inline Angular.js commit style guide

Rather than make readers hop somewhere else, inline the commit style
information to make it more convenient and obvious what is expected.

Also polish up the introductory text and code style requirements to
reduce confusion.
Merge pull request #347 from kgriffs/rename-raw

refactor(HTTPError): Rename "raw" method to "dict"
Merge pull request #348 from kgriffs/chore

chore(CONTRIBUTING): Inline Angular.js commit style guide
perf(Request): Use partition in lieu of split

In the range property, use string.partition instead of string.split, since
the latter executes slightly faster. Also improve error handling of invalid
range specifications.
Merge pull request #353 from kgriffs/perf

perf(Request): Use partition in lieu of split
Added support to handle empty query parameters.

Added support to handle empty query parameters through a global
option set ``RequestOptions`` applied to ``API``.
This option can be enabled by using
api.req_options.keep_blank_qs_values = True where api is an instance
of ``API``.

This change allows queries such as '?a=1&bool' and '?a=1&empty=' to
preserve the 'bool' and 'empty' values respectively as '' instead
of the default value of None.

Another option was added to ``Request.get_param_as_bool`` to allow
empty query parameters to return a True value.
Because of the non-obvious nature of this change ('' == True), it
requires a blank_as_true=True argument be passed to
``Request.get_param_as_bool``.
Merge pull request #336 from xiaclo/patch-2

Store blank parameters as '' instead of None
fix(Request): Improve support for content-length under wsgiref

Under wsgiref, if no content-length header is provided, an empty
string is inserted. Update falcon.Request to handle this case,
as well as to more gracefully handle the case that the header is
set to any invalid value.
refactor(Request): Fix indentation of _parse_form_urlencoded

Remove the extra indentation level of the _parse_form_urlencoded
method's body.
Merge pull request #358 from kgriffs/wsgiref

fix(Request): Improve support for content-length under wsgiref
refactor(HTTPError): Add a "to_" prefix to serialization methods

Perfix the serialization method names (.dict, .json, .xml) with
"to_" in order to more clearly express their utility.
Merge pull request #359 from kgriffs/rename_error_helpers

refactor(HTTPError): Add a "to_" prefix to serialization methods
refactor(falcon.exceptions): Rename module to falcon.errors

It is (arguably) more Pythonic to talk about "errors" as opposed to
"exceptions". Rename the exceptions module to reflect this.

Closes #342