os_open: impl mch_open with libuv. ref #133

- use return value instead of open_req.result
- libuv uv_fs_open() returns `-errno` instead of always -1
- libuv always sets open_req.result to the return value, _except_ for OOM
  where it only sets the return value. So always use the return value.
- replace calls to mch_open macro.
- update call sites expecting -1 error
os_open: add unit tests
Merge #846 'impl mch_open with libuv'
Use default busted pattern for unittests #943

- Unittest should contain substring '_spec' in filename.
- This is the simplest way to use both lua and moonscript tests.
- This prevents running of non-test scripts from test folder.
Use strict function prototypes #945

`-Wstrict-prototypes` warn if a function is declared or defined without
specifying the argument types.

This warning disallow function prototypes with empty parameter list.
In C, a function declared with an empty parameter list accepts an
arbitrary number of arguments when being called. This is for historic
reasons; originally, C functions didn't have prototypes, as C evolved
from B, a typeless language. When prototypes were added, the original
typeless declarations were left in the language for backwards
compatibility.
Instead we should provide `void` in argument list to state
that function doesn't have arguments.

Also this warning disallow declaring type of the parameters after the
parentheses because Neovim header generator produce no declarations for
old-stlyle prototypes: it expects to find `{` after prototype.
Temporary os_mkdtemp implementation. Use it instead of mkdtemp.
Remove HAVE_MKDTEMP

For now we provide simple `mkdtemp` for Windows, in the future we will
use libuv for that.
Remove USE_TMPNAM

tmpnam() is deprecated.
Remove #ifdefs TEMPDIRNAMES and add TEMPDIRNAMES for Windows

Vim does not define TEMPDIRNAMES for all systems, but it is defined for
all systems supported by Neovim.
Temporary directory names for Windows was obtained from GetTempPath()
function documentation at MSDN.
Additionally small renamings were performed.
Refactor vim_tempname

- temp_count is uint32_t now instead of long because it supposed to be
  at most 999999999 (comment on line 5227) temporary files. The most
  probably it was a long for compatibility with systems where int is
  16-bit.
- Use "nvim" as prefix for temp folder name instead of "v"
- Remove unused parameter from vim_tempname
Add vim_gettempdir(), remove global vim_tempdir

vim_gettempdir() and vim_maketempdir() was extracted from
vim_tempname().
Extract `tempfile` module from fileio

Though this module is relatively small it has very clear boundaries.
The last argument for extracting `tempfile` was the errors which I got
when I was writing unittests for it: `cimport './src/nvim/fileio.h'`
does not work for some reason.
tempfile.c: add tests
tempfile.c: add to clint-files and fix warnings
tempfile.c: enable -Wconversion
tempfile.c: fix style issues and comments
tempfile.c: refactor vim_settempdir

- return result of setting and remove directory if the setting was not
  successful.
- don't do `STRCPY` in case of `vim_FullName` failure because
  `vim_FullName` already did it.
Create os/os_defs.h for os specific definitions
Merge #850 'impl mkdtemp for windows, refactor vim_tempname'
Add more commented patch numbers to version.c (3) #940

This should help reduce conflicts when merging patches from upstream.