MSVC: Don't define NDEBUG even for Release builds.
Check for Windows-specific functions by checking _WIN32, not HAVE_* definitions
MSVC: Define NATIVE_LITTLE_ENDIAN / inline as __inline / UNICODE & _UNICODE
Add sodium_malloc(), sodium_allocarray(), sodium_calloc() and sodium_free()

ptr = sodium_malloc(size) returns a pointer from which exactly "size" bytes
can be accessed. If the requested size is a multiple of 128 (the highest common
cache line size), the pointer is likely to be aligned to 128 bytes as
well.

The region is immediately followed by a guard page.
As a result, any attempt to access a memory location after ptr[size - 1] will
immediately trigger a segmentation fault.

The allocated region is mlock()ed and filled with garbage.

Another guard page, as well as a canary are placed before the returned
pointer.

The canary is checked by sodium_free(); as a result, altering data right
before ptr is likely to cause sodium_free() to kill the process.

sodium_free() munlock() the region and fills it with zeros before
actually calling free().