Fix the nvim-clipboard help instructions

Fixes #1407
job: Fix memory leak in job_start().

If a new job cannot be started because no slots are free, we return early
without freeing the argv argument.
Mark some function arguments as [consumed] in the docs.

The argument argv of job_start() and channel_from_job() will be
freed. Mark them as such in the comments of this functions.
Try to fix problem found in the Travis Ci build.

An uv_pipe_t handle for a WStream could be left open for a
particular code path.

Patch by tarruda.
Improve legacy2luatest script.
build: allow installing into the root directory (/)

It turns out that CMake always canonicalizes `CMAKE_INSTALL_PREFIX` to
an absolute path--if it's a relative path, it canonicalizes it relative
to the build directory.  As a result, the only thing the DESTDIR and
relative directory check prevents is an installation into the root
directory since CMake strips the trailing slash, turning "/" into an
empty string.  Let's just remove the check all together, since it cannot
accomplish what we intended.
Merge pull request #1429 from oni-link/fix.job_start.leak

Fix memory leak in job_start().
Merge pull request #1443 from jszakmeister/allow-root-dir-installs

build: allow installing into the root directory (/)
Merge pull request #1442 from fwalch/improve-legacy2luatest

Improve legacy2luatest script.
Merge pull request #1416 from jondkinney/master

Fix the nvim-clipboard help instructions
Fix warnings: ex_cmds.c: do_ascii(): Garbage value (2): MI.

Problems   : Assigned value is garbage or undefined @ 127.
             Assigned value is garbage or undefined @ 152.
Diagnostic : Multithreading issues.
Rationale  : Error could only occurr if global `enc_utf8` changed while
             the function is executing.
Resolution : Use local copy of global var.
Fix warnings: ex_cmds.c: do_ecmd(): Np dereference: FP.

Problem    : Dereference of null pointer @ 2768.
Diagnostic : False positive.
Rationale  : `win_valid(oldwin)` implies `oldwin` not null.
Resolution : Assert `oldwin` not null.
Fix warnings: ex_cmds2.c: do_source(): Np dereference: FP.

Problem    : Dereference of null pointer @ 2462.
Diagnostic : False positive.
Rationale  : Error occurred if neither loop neither following if were
             entered (this implied `script_items.ga_len < 0`, which
             should not be possible).
Resolution : Assert not negative length (loop or if entered).
Fix warnings: ex_cmds2.c: do_source(): Unitialized arg (2): MI.

Problem    : Uninitialized argument value @ 2485.
             Uninitialized argument value @ 2507.
Diagnostic : Multithreading issues.
Rationale  : Error can only occur if globals `do_profiling`, `time_fd`
             are modified while function is executing.
Resolution : Use local copy of globals.
Fix warnings: ex_docmd.c: eval_vars(): Unitialized arg: FP.

Problem    : Uninitialized argument value @ 7704.
Diagnostic : False positive.
Rationale  : Error occurs if `switch(spec_idx)` doesn't enter any case,
             which should not occur after
             `spec_idx = find_cmdline_var(...)` returned non-negative.
Resolution : Add default clause to switch and error if reached.
Fix warnings: ex_eval.c: report_pending(): Np dereference: FP.

Problem    : Dereference of null pointer @ 711.
Diagnostic : False positive.
Rationale  : Codepath producing error invokes this function with values
             `action=RPC_DISCARD, pending=CSTP_FINISH, value=NULL`.
             Now, for some reason, the analyzer is remembering that
             `value` is null, and that `action` is `RPC_DISCARD`, but
             it's not remembering that `pending` is `CSTP_FINISH`.
             Then, it's taking the wrong branch in the switch for
             `pending`. That path would never occur invocating the
             function with those values.
Resolution : Assert function precondition between `pending` and `value`.
             This is, let the compiler know that `value` being null
             implies `pending` not being neither throw neither return.
Fix warnings: ex_getln.c: init_history(): Double free: FP.

Problem    : Double free @ 4249.
Diagnostic : False positive.
Rationale  : Codepath leading to error contains two consecutive
             iterations in which `if (--j < 0)` is true.
             That executes `free` two consecutive times with the same
             value (hislen - 1) for j, with leads to double free.
             Now, that can only happen with j == 0 && hislen == 1.
             And that would imply j == hisidx[type] too, which would
             take the following break.
             So, the error codepath cannot really happen, but the
             compiler cannot deduce the last implication.
Resolution : We have two possible solutions for this:
             1.- Comparing value of j before and after updating it,
                 and breaking out of iteration if equal.
                 That changes nothing in functionality, but teaches the
                 compiler his proposed error codepath is impossible.
             2.- Nullify pointer after freeing.
                 This way, the compiler still thinks his error codepath
                 is possible, but it's not an error anymore, as
                 free(NULL) is a no-op.
             We opt for solution 2, as solution 1 requires adding
             logic that adds nothing (and having to explain that clearly
             in aside comments) just for the purpose of silencing
             warning. On the other hand, solution 2 improves the code,
             adding something considered good practice in any case,
             and therefore doesn't require further explanation.
Fix warnings: fold.c: get_foldtext(): Np dereference: FP.

Problem    : Dereference of null pointer @ 1701.
Diagnostic : False positive.
Rationale  : Comparison `last_wp != wp` just after initializing
             `last_wp` to NULL makes the compiler think `wp` can be
             null. Error appears then on codepath assuming comparison is
             false (i.e. `wp` is null).
Resolution : Change order of OR clauses.
             That seems not to give motives for the analyzer to check
             the `wp` null path and removes the warning.
             But potential null dereference is still there, so we add
             the nonnull annotation to `wp` parameter.
Fix warnings: fileio.c: readfile(): Dead assignment: HI.

Problem    : Dead assignment @ 1754.
Diagnostic : Harmless issue.
Rationale  : It's true `iconv_fd` is not going to be used again (we are
             in the failure handler). But what is being done (assigning
             sentinel value to mark as "empty" after destroying) is in
             fact good practice, which could turn significant if more
             code is added later on. So, we don't want to remove this.
Resolution : Leave it there, but exclude from analysis.
Fix warnings: fileio.c: aucmd_prepbuf(): Np dereference: FP.

Problem    : Dereference of null pointer @ 6219.
Diagnostic : False positive.
Rationale  : Problem occurs if `aucmd_win` is NULL after
             `win_alloc_aucmd_win()`, which cannot happen since it uses
             new memory functions. So, this is a leftover since OOM
             refactorization.
Resolution : Remove dead code.