viml: re-add sha256() function

Was removed in #699 but actually doesn't have anything to do with security.
sha256: replace gettimeofday()

gettimeofday() is not portable. I suspect os_hrtime() is also better as a
seed than gettimeofday() or time() were.
term: replace gettimeofday()

gettimeofday() is not portable, replace with os_hrtime() wherever possible.
The new code should behave equivalently to the old implementation.

Because of this, HAVE_GETTIMEOFDAY is no longer necessary To be able to
handle double clicks.
cmake: remove check for gettimeofday

There are no more uses of gettimeofday, so remove the check in CMake.
func_attr: clang/icc support NONNULL_* attr

Both clang and (apparently) icc support the nonnull attribute. So I'm not
sure why it wasn't enabled in the first place.

- clang: http://clang-analyzer.llvm.org/annotations.html#attr_nonnull
- icc: https://software.intel.com/en-us/forums/topic/280290 (not conclusive
  evidence, but the best I could find, lacking docs)
Fix memory leak in provider_call.

If no channel can be found for a method, free argument arg before
returning.
Fix memory leaks for jobs.

Free the data memory of process and pipe handles in the close callback
for a job.
Merge pull request #987 from oni-link/fix_some_memory_leaks

Fix some memory leaks in job.c and provider.c
Merge pull request #986 from aktau/func-attr-enable-more-clang

func_attr: clang/icc support NONNULL_* attr
message: add missing stdarg.h include #993

Fixes up gcc 4.1 (not specifically a supported compiler but it's standard
for varargs anyway so it's good to have it included and depend less on
implicit includes).
build: Compile static luajit lib with -fPIC #996

Should fix the following travis error:

    /usr/bin/ld: /opt/neovim-deps/lib/libluajit-5.1.a(lj_err.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
    /opt/neovim-deps/lib/libluajit-5.1.a: could not read symbols: Bad value
Merge pull request #975 from aktau/remove-gettimeofday

remove gettimeofday() usage
Minor buffer.c style cleanups
os/shell: constify arguments

Minor fixes
job: implement job_wait()

Used to wait synchronously for a job to end.
wstream: write completion callback

Now modules using the wstream can find out what's happening to their writes.
wstream: allow empty release wbuffer cb

Sometimes a wbuffer is not supposed to be free()'d (such as when it comes
from a constant (possibly static) string, for example.
job: add in-pipe notification and closing support

- One can now manually close the in-pipe, without having to tear down the
  job.
- One can be notified of write success/failure.
os/shell: implement os_system

With the goal to support pipe-only system() calls.

Notes on the second (vim) argument to f_system() (i.e.: redirected input)
and its implications:

- When calling system('cat -', ['some', 'list']), vanilla vim (before a
  recent patch that added support for passing lists) just passes an empty
  file to the process. This is the same as immediately closing the pipe,
  which os_system does when no input is given. If we wouldn't close the
  pipe, the process will linger forever (as is the case with `cat -`).

As of now, it's not allowed to pass a non-NULL pointer as the `output`
parameter. In other words, it's not possible to signal disinterst in the
process output. That may change in the future.
eval: reimplement f_system() on top of os_system()

This evades the tempfile problem (unless of course one manually adds
redirects to the shell commandline, which some plugins seem to do, e.g.:
vim-easytags).