Python 3 support.

The Elpy module has been ported to Python 3.

Changes:

test_autoimport: Use json to test, not ConfigParser.

ConfigParser has been renamed in Python 3, so using it for tests is
just artificially creating compatibility problems.

linecol_to_pos: Use range instead of xrange.

xrange has been renamed to range in Python 3, and as the numbers are
smallish, this should not be a problem for Python 2, either.

elpy.compat, elpy.tests.compat: New files.

Python 3 compatibility files to keep most of it in one place.

pydocutils: Ensure that the pydoc functions are not called with unicode.

For some reason, the pydoc functions simply don't return anything when
called with unicode strings in Python 2. Even if they do not contain
any special code points. This change moves the removal of unicode from
the RPC server to pydocutils, where it belongs.

builtins compatibility: Move references to builtins to compat module.

Python 3 renamed __builtin__ to builtins. The elpy.tests.compat module
imports the correct one as "builtins" in either case. The rest of
elpy's test suite just imports it from there.

test_jedibackend: Adjust expected return values for Python 3.

Python 3 changed the signature of threading.Thread and added another
symbol to the module that starts with "T". Deal with these changes.

test_rpc: Use compatibility StringIO.

Python 3 moved StringIO around and changed the semantics of truncate
slightly, as truncate(0) won't move the file pointer. This commit
seeks the pointer to the beginning of the file and truncates then.

test_should_write_json_line: Deal with possible reordering.

The old test relied on the order of attributes of an object after
json.dumps, which is not reliable at all. Use json.loads instead and
compare dictionaries, not strings.

pydocutils: Calculate type lists depending on Python version.

Python 3 dropped support for old-style classes. This commit makes
pydocutils only use them in Python 2.

findundefined._get_name: Deal with ast.arg

Python 3 introduced a new way of handling arguments in the AST. This
commit adds support for this new type of argument specification.

Rope does not support Python 3.

Adjust various tests to not try and load rope or rope-specific modules
in Python 3.

.travis.yml: Add Python 3.3.

Elpy now should be Python 3 ready, sans Rope (which is a pity, but
that's how it is).