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.
Statically allocate NameBuff
Change buffer.h #defines to enums so they can be used in tests
Add tests for buffer.c and fileio.c
Merge pull request #904 from war1025/dev/buffer_tests

Add unit tests for buffer.c and fileio.c
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.