Replace vim_free() implementation

This replaces the vim_free() implementation with a free() call and adds
a deprecated flag for the doxygen documentation.
replaced `vim_free()` calls with `free()` calls
removed `vim_free()` function
Use REGEXP_DEBUG to enable log-based regexp debugging

ENABLE_LOG is too broad to be used only to enable logging in regexp_nfa.c. Use
REGEXP_DEBUG instead.

ENABLE_LOG was defined by checking REGEXP_DEBUG in the first place.
Macro-based log utility for Neovim

This commit introduces 4 macros (for different log levels) that can be used
to log messages to $HOME/.nvimlog:

 - DLOG: log a debug message (e.g. `DLOG("sum(%d, %d): %d", x, y, sum(x, y));`)
 - ILOG: log some useful information (e.g. `ILOG("Main loop started")`)
 - WLOG: log a warning (e.g. `WLOG("Command not found: %s", command)`)
 - ELOG: log an error (e.g. `ELOG("Out of memory. Exiting.")`)

All these macros are disabled if `NDEBUG` or `DISABLE_LOG` is defined. This
guarantees that a `Release` build won't log anything.

`MIN_LOG_LEVEL` can be defined to reduce the verbosity of the log. The log
levels are:

```
DEBUG_LOG_LEVEL     0
INFO_LOG_LEVEL      1
WARNING_LOG_LEVEL   2
ERROR_LOG_LEVEL     3
```

`MIN_LOG_LEVEL` is 0 by default enabling all levels. If `MIN_LOG_LEVEL` is set
to 2, for example, only warnings and errors will be logged.

That's how the log looks like:

```
     DATETIME   LOG_LEVEL  FUNCTION  LINE  PID      FORMATTED MESSAGE

2014/05/01 23:46:14 [info @ main_loop:582] 44376 - Starting Neovim main loop.
2014/05/01 23:46:31 [info @ main_loop:582] 44400 - Starting Neovim main loop.
```
Introduce os_localtime_r() and os_get_local_time()

Replace localtime() with os_localtime_r() in `eval.c` and `undo.c`.
Prevent preserve_exit() from executing more than once.

https://github.com/neovim/neovim/issues/563
Merge pull request #644 from philix/log

Macro-based log utility for Neovim
Add --with-pic flag to msgpack configuration
Implement generic map on top of khash

Implement a generic string->pointer associative array on top of the khash macro
library, providing a nice API for simple hash table requirements. (khash gives
lot of control with a not-so-friendly API, which is unnecessary on most cases)
Add helpers for accessing data in libuv handles

Libuv handles have a single generic pointer for storing user data, this adds
some functions for adding/retrieving pointers to "slots" in the new `HandleData`
structure, which increase flexibility when using shared handles(job streams for
example)
Refactor modules to use handle data accessors

The job, rstream and wstream modules now use handle data accessors
Add teardown function for the event.c module

Also move the `job_teardown` call from os_unix.c to the event module
Fix update of pending_reqs in `write_cb`
Refactor API types and prototypes

- Split functions with multiple files in the 'api' subdirectory
- Move/Add more types in the 'api/defs.h' header
- Add more prototypes
- Refactor scripts/msgpack-gen.lua
- Move msgpack modules to 'os' subdirectory
Add channel module

- Add channel module that exposes the API over arbitrary streams
- Add `xmemdup` for duplicating memory chunks
- Make job exit callback optional
Add server module for accepting API connections

Currently one server listening on a random is started automatically, but we may
add facilities to let vimscript start more servers in the future
Fix jumps depending on unitialized values

Reported by valgrind