Introduce vim namespace: Contrib YCM: Fix build dir calculation.

Build directory calculation had not been correctly updated in #716.
Introduce vim namespace: Contrib YCM: Fix style issues.

Python-mode signaled a couple of issues here:
- Multiple imports on same line.
- Line too long.
Remove cryptography

As discussed in #694, vim encryption uses old,
obsolete algorithms that are poorly implemented.
Since insecure cryptography is worse than no
cryptgraphy, the community voted in favor of
removing all crypto.

Various alternatives to the old crypto is
being discussed in #701.

Closes #694.
API Fixes: Remove unnecessary NULL checks
API Fixes: Check that error isn't set in buffer_get_line
API Fixes: Remove wrong increment statement from buffer_set_slice
API Fixes: Implement api/handle module

This module will be used to implement remote management of objects through the
API. Object types to be registered must have a `uint64_t` field named 'handle'.
API Fixes: Register/unregister created/destroyed buffers

- Add the 'handle' field to `buf_T`
- Add declare/implement functions for registering/unregistering/retrieving
  buffers
- Register/unregister buffers when they are created/destroyed.
API Fixes: Register/unregister created/destroyed windows

- Add the 'handle' field to `win_T`
- Add declare/implement functions for registering/unregistering/retrieving
  windows
- Register/unregister windows when they are created/destroyed.
API Fixes: Register/unregister created/destroyed tabpages

- Add the 'handle' field to `tabpage_T`
- Add declare/implement functions for registering/unregistering/retrieving
  tabpages
- Register/unregister tabpages when they are created/destroyed.
API Fixes: Generalize buffer, window and tabpage types/functions

- Extract remote types definitions into a macro
- Extract msgpack_rpc helper functions for remote types into a macro
API Fixes: Add macro infrastructure for typed arrays

- Add macros supporting typed arrays in the remote API
- Refactor StringArray-related functions on top of the new macros
API Fixes: Change the integer type of remote objects to uint64_t
API Fixes: Return handles instead of indexes

- Define specialized arrays for each remote object type
- Implement msgpack_rpc functions for dealing with the new types
- Refactor all functions dealing with buffers, windows and tabpages to
  return/accept handles instead of list indexes.
API Fixes: Implement buffer_get_number
API Fixes: Setup test infrastructure

Add a basic framework for writing API tests, not only increasing overall
coverage, but also helping verify that client libraries for other platforms are
in sync with the latest API changes
API Fixes: Fix wrong loop in vim_list_runtime_paths
API Fixes: Use macro for initializing all arrays
API Fixes: Use 0-terminated string in vim_strwidth

While the mb_string2cells function accepts a length parameter, it only seems to
work properly when a 0-terminated strings, since valgrind reports a conditional
jump that depends on uninitialized values(means it reads after the string
boundaries which could result in overflows)
API Fixes: Terminate directory string in vim_change_directory