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
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'
Fix warnings: cursor_shape.c: parse_shape_opt(): Garbage value: FP.

Problem: Assigned value is garbage or undefined @ 187.
         http://neovim.org/doc/reports/clang/report-7b7d61.html#EndPath.

Diagnostic: False positive.
Rationale : `colonp`, must be `>= modep, or null` by `vim_strchr`
            postcondition. At this point we also it's not null and it's
            not equal to `modep`, by previous code. So, it must be
            `> modep`.
Resolution: Assert `colonp > modep`.
Fix warnings: screen.c: redraw_asap(): Various (6): MI.

Problems: Argument with 'nonnull' attribute passed null @ 277.
          http://neovim.org/doc/reports/clang/report-9c3614.html#EndPath

          Result of operation is garbage or undefined @ 281.
          http://neovim.org/doc/reports/clang/report-45efbf.html#EndPath

          Argument with 'nonnull' attribute passed null @ 306.
          http://neovim.org/doc/reports/clang/report-ffb84f.html#EndPath

          Result of operation is garbage or undefined @ 311.
          http://neovim.org/doc/reports/clang/report-d04333.html#EndPath

          Argument with 'nonnull' attribute passed null @ 315.
          http://neovim.org/doc/reports/clang/report-786819.html#EndPath

          Uninitialized argument value @ 328.
          http://neovim.org/doc/reports/clang/report-2a5506.html#EndPath

Diagnostic: Multithreading issues.
Rationale : All reported problems can only occur if accesed globals
            change state while executing function, which could only
            happen in a multithreaded environment.
Resolution: Use local variables.
            Note that this change alters function semantics, as now
            function only depends on global values at entry time.
            This shouldn't be a problem, though, as new semantics should
            be in fact better.
Fix warnings: screen.c: win_line(): Dead initialization: HI.

Problem: Dead initialization @ 3477.
         http://neovim.org/doc/reports/clang/report-94b736.html#EndPath

Diagnostic: Harmless issue.
Rationale : `len` is assigned a new value just some lines below. So,
            this just seems something due to old-style variable
            declarations.
Resolution: We could just remove initialization, but prefer moving
            declaration down to point of initialization.
Fix warnings: screen.c: win_line(): Dead assigment: HI.

Problem: Dead assigment.
         http://neovim.org/doc/reports/clang/report-7362ba.html#EndPath

Diagnostic: Harmless issue.
Rationale : `boguscols` is in fact unread by downstream code.
Resolution: Comment out. This is preferred here over just removing the
            line because involved logic is complex, and future readers
            of this code could find this extra knowledge useful to
            understand what the code is doing.
Fix warnings: screen.c: showmode(): Dead assignment: HI.

Problem: Dead assignment @ 7535.
         http://neovim.org/doc/reports/clang/report-19a5cd.html#EndPath

Diagnostic: Harmless issue.
Rationale : `length = msg_col;` is unconditionally executed after this.
Resolution: Remove assignment.