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
fix! Disable TAP output

Reason: using TAP output disables error messages.

Also ref #983.
core: Add X[MC]ALLOC_NEW convenience macros
core: Move MENUDEPTH macros to menu.h
core: Make replace_termcodes and friends accept length and cpo_flags

Reasons:
- One does not have to do `s[len] = NUL` to work with these functions if they do
  not need to replace the whole string: thus `s` may be const.
- One does not have to save/restore p_cpo to work with them.
core: Add findoption_len function

It is like findoption(), but works with non-NUL-terminated strings.
core: Add get_option_properties function
core: Add MAX_CHAR_LEN macros
tests/helpers: Call init functions other then mch_early_init