Refactor: Cleanup python.

- Improve variable names.
- PEP8 style guide compliance (fix long lines).
Refactor: Some arquitecture.

Reorganize functions into categories/layers with clear purposes:

- Main functions:
    Externally invoked, entry points for functionality.
    Express main funcionality abstractly. They delegate to
    vim-interfacing functions for whatever depends on vim.
- Vim-interfacing functions:
    Interactions with vim. Whatever info we need to get from vim or
    whatever action we want to perform on vim.
- Utility functions:
    Whatever else, for auxiliary purposes.
Refactor: Clarify coordinate conversion.

    Problem:  Vim uses 1-based rows. Server uses 0-base rows (standard).
              In python code, it's not clear where conversion should occur.

    Solution: All functions pass/receive standard coordinates.
              Conversion is encapsulated in utility functions
              'to_vim_coordinates' and 'to_standard_coordinates'.
              Only vim-interfacing functions should need to call them.
Refactor: Cleanup vim.
New: Multiple resolve results support.

Client side:
Support multiple resolve results (occurs often with dynamic languages).
In such a case, open a location list window, to let the use choose which
of the possible definitions is the correct one.

Server side:
Do in fact return multiple results (was returning only one).
Add line preview field to resolve outcomes.
Refactor: Simplify python-vim interaction.

Use vim-7.4 python-interface improvements to simplify interaction
between vim and python:

- Put python code in python2/ directory to make use of autoimport
  instead of manually adding to the runtimepath.
- Use pyeval to Invoke python functions from vimscript in such a way
  that python functions can be pure python functions:
  · they receive actual arguments instead of looking for them through
    'vim.eval("a:...")'.
  · they use normal python return instead of invoking
    'vim.eval("return ...")'.
- Use 'vim.Function(...)' to invoke vimscript functions from python
  code, getting clean python object results. This had already been done
  in previous commits, not here. This last point included here for
  completeness.

This way, vimscript and python code gets more clearly separated.
New: Protect client against server errors.

On server error, show error message instead of full stacktrace.
Covers server unavailable as well as several possible types of errors.
Multiple resolve results: Use element's presentable text instead of line preview.
Multiple resolve results: Improve server performance.
Fix completion problems.

Previous commit "New: Protect against client server errors." had broken server functions returning values.
Use Java instead of Kotlin.
fix warning
Add import vim