perf(Request): Use a list comprehension and don't lowercase the headers

List comprehensions are faster than generators. Also, there is no
need to lowercase the header name, since headers are case-insensitive
after all.
fix: Add output encoding to tests for Python3

In certain environment setups python 3 will detect the appropriate
output as ASCII and will fail when trying to write a unicode string.
Override this by forcing UTF-8.
Ensure long description is Unicode string in setup

Python 3.3 is not able to properly install Falcon
due to UTF-8 characters in the README.rst file. The
characters are fine, we just need to be sure to decode
the open('README.rst', 'rb').read() bytestring as a
unicode string.

An example of the setup failure can be seen here:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 586: ordinal not in range(128)

http://logs.openstack.org/40/55040/2/check/gate-solum-python33/02f9aca/console.html
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
fix: Duplicate six import
Removes unneeded cruft from error handler tests