File object cleanup: Use context managers to actively close files.

This should prevent file descriptor leakage (and warnings in Python 3).
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_py3k: Support the Rope module for Python 3

There's a Rope version available for Python 3 on PyPI. It's a
different package name, but provides the same interface. Offer
it for installation if the default Python is version 3, and use
it even in Python 3.

.travis.yml: Add Python 3.3.

Elpy now should be Python 3 ready.

...
elpy.refactor: Be able to work even if Rope is not available.

We have one refactoring option (one!) that works without Rope. We
might get more in the future, so make it possible to use them
even if Rope is not installed.