windows: report uv_process_t exit code correctly

A stupid oversight in 66ae0ff would cause a random value to be reported
as the exit code for a 'normally exited' child process.
test: strip trailing whitespace
windows: make uv_fs_chmod() report errors correctly

Before this patch libuv would attempt to use GetLastError() to retrieve
the cause of NtQueryInformationFile failure, but that's not how it
should be done.
windows: add additional NTSTATUS class detection macros
windows: add DDK definitions for more file information classes

Copy some more structs from the NT DDK to winapi.h, so people can
compile libuv without installing the DDK.
windows: make it possible to use NtQueryVolumeInformationFile

This commit adds bootrstap code, function signatures, struct definitions
etc. to make it possible for libuv to use NtQueryVolumeInformationFile.

Most of this comes from the NT DDK, which libuv mirrors so that people
don't need the DDK to compile it.
windows: squelch some compiler warnings

This removes some compiler warnings caused by implicit type conversion
from uint64_t to long, which would happen in the `FILETIME_TO_TIMESPEC`
macro.
windows: reimplement uv_fs_stat using NT syscalls

This improves the output of uv_fs_stat:
  * `st_ctime` now contains the change time, not the creation time.
  * `st_ino` is now filled in with an fs-specific unique number.
  * `st_dev` is set to the serial number of the containing file system.
  * `st_blocks` now gets set.
  * `st_blksize` is no longer zero, but set to a reasonable default.