build: turn down the _FORTIFY_SOURCE level on gcc >= 4.0
Merge pull request #1390 from jszakmeister/turn-down-fortify-source

build: turn down the _FORTIFY_SOURCE level on gcc >= 4.0
CMake: Pass build type CFLAGS to header generator.
CMake: Modify _FORTIFY_SOURCE only for release builds.

Remove build warning for Debug builds:

    # warning _FORTIFY_SOURCE requires compiling with optimization (-O)
CMake: Rename target "test" to "functionaltest".

Remove build warning:

    The target name "test" is reserved or not valid for certain CMake
    features, such as generator expressions, and may result in undefined
    behavior.
Merge pull request #1392 from fwalch/fix-build-warnings

Fix build warnings.
build: fix running of functional tests directly with CMake

If you aren't just building everything into build/, then the functional
tests fail because they can't find the nvim executable.  Let's pass in
the location of the nvim executable, and set NVIM_PRG environment
variable accordingly.
Merge pull request #1395 from jszakmeister/fix-run-functional-tests

build: fix running of functional tests directly with CMake
CMake: Fix running individual (functional/unit) test.
Merge pull request #1397 from fwalch/fix-test_file

Restore TEST_FILE functionality for running individual tests.
test: Set VIMRUNTIME before running tests

This is required for testing scripts under the 'runtime' directory
iconv: re-enable

This seems to have been disabled in the transition from vim to neovim,
re-enable it.
test: Simplify/fix options_spec.lua

The options_spec.lua suite has one purpose: Check if the :options commands will
throw any exception(:options is implemented by $VIMRUNTIME/optwin.vim). For this
it is best to use the `vim_command` API function since it will automatically
catch exceptions and forward them via msgpack-rpc.

Also, the option window seems to affect other tests, so call `restart` in the
teardown hook.
test: Add more valgrind "possibly lost" suppressions

These valgrind entries are false positives because vim uses interior pointers.
channel: Delay notifications to avoid client race conditions

It is currently possible for a client to send a response that doesn't match the
current server->client request(at the top of the stack). This commit fixes that
by delaying notifications to until the first `channel_send_call` invocation
returns.

Also remove the "call stack" size check, vim will already break if the call
stack goes too deep.
Merge PR #1398 'Tests and msgpack rpc improvements'
Merge pull request #1370 from aktau/enable-iconv

re-enable iconv
Remove long_u: eval: Replace with size_t.

Note: No effort is done on refactoring anything in eval module, as it
      will be eventually dropped.
Remove long_u: memfile: Cleanup: Comments.

- Restyle comments (/// when appropiate, // otherwise).
- Improve comments (add new comments, augment/clarify existing ones).
Remove long_u: memfile: Cleanup: Others.

memfile_defs.h:
- Inline struct definitions in typedefs.
- Move memfile_T definition to this file (weirdly, was in buffer_defs.h).

memfile.c:
- Use C99 style variable declarations. This is, move variable declarations as
  near to first-usage point as possible).
- Modernize old-style function declarations.
- Fix indent at some places (some multiline expressions and the like).