feat(Request): Also accept query params from POSTed forms

Fixes #170
fix(setup): Fix UTF-8 loading of README.rst

README.rst contains some unicode characters which under certain
environment conditions will cause python3 to fail to read the
description and run setup.py.

fixes: #186
feat(uri): decode percent encoded query string

Per RFC3986's requirement, we decode the query string, plus the
'+' -> ' ' conversion.  We also assume the source string before
percent-encoded is a UTF-8 string, so we decode it as well.

Related bug: https://bugs.launchpad.net/marconi/+bug/1237591
Merge pull request #195 from lichray/percent_query_string

feat(uri): decode percent encoded query string
Merge pull request #187 from jamielennox/py3-setup

fix(setup): Fix UTF-8 loading of README.rst
fix: Duplicate six import
fix(api): 405 Method Not Allowed - False positive

This patch removes the TypeError heuristic code altogether, since it
has been problematic in the past (and often masks app bugs).

BREAKING CHANGE: You can no longer overload a single resource class to
    respond to multiple routes that differ by URI template params. This
    has come to be viewed as an anti-pattern, and so it will no longer
    be supported.

    If you attempt to have a single OxResource that you try to overload to
    respond to both, e.g., "PUT /oxen/old-ben" and "GET /oxen", it will
    no longer work after this commit.

    Developers should be advised to resist the temptation to overload their
    resources; instead, create OxResource and OxenResource. It is common to
    put these two classes in the same module.

Fixes Issue #205
Merge pull request #208 from kgriffs/master

fix(api): 405 Method Not Allowed - False positive
fix(Request): Blank query string is always escaped

This patch avoids passing the query string through util.percent_unescape
when it is empty, in order to save a few microseconds when the client
does not submit any query parameters.
Adds an Exception Handler Mechanism

How to use:
    def handler(ex, req, resp, params):
        log_error(req, ex)
        resp.status = falcon.HTTP_500
        resp.body = "I regret to inform you that an unfortunate error has occured."

    app.add_error_handler(ValueError, handler)
Removes unneeded cruft from error handler tests
chore: Make travis run tests through tox the same way everyone else does

This gives us flake8 stuff and makes the Travis test more real-world.
Merge pull request #214 from kgriffs/travis

chore: Make travis run tests through tox the same way everyone else does
Merge pull request #211 from kgriffs/tuning

fix(Request): Blank query string is always escaped
Merge pull request #202 from sudorandom/exception_handler

feat(api): Adds an Exception Handler Mechanism
fix(README): HTTPUnauthorized and HTTPUnsupportedMediaType out of date

This patch updates the sample code that raises these exceptions,
to match the latest initializer signatures.
style: Rename 'e' to 'ex'

This patch makes some style rules explicit by listing them in
CONTRIBUTING.md and fixes one case in which the style rules were
violated.
feature(api): Error handlers may raise HTTPError

Error handlers may now raise instances of HTTPError and expect them
to be converted to a proper HTTP response, as they would be when
raised from within a regular resource responder or hook.

Also added examples to the README of using the error handler feature.
fix(HTTPUnauthorized): Move scheme into kwargs

This patch moves scheme from being it's own param into kwargs, to
discourage using it as a positional arg. This will avoid subtle
bugs in the future that may arise as the signature for the
HTTPError constructor changes over time.

BREAKING CHANGE: The 'scheme' argument to HTTPUnauthorized can no
    longer be passed positionally; it must be a named argument.
doc(README): Update to reflect change to HTTPUnauthorized scheme param