Add sodium_{malloc,allocarray,free}() and sodium_mprotect_*()

ptr = sodium_malloc(size) returns a pointer from which exactly "size" bytes
can be accessed.

ptr = sodium_allocarray(count, size) allocates enough storage space for
"count" pointers or scalars of unit size "size".

In both cases, 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 0xd0 bytes.

A read-only page with the size, a 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()s the region and fills it with zeros before
actually calling free().

sodium_mprotect_noaccess(), sodium_mprotect_readonly() and
sodium_mprotect_readwrite() can be used to change the protection on the set
of allocated pages.

Reverting the protection to read+write is not required before calling
sodium_free().
Clear the seed in crypto_sign_keypair() - Reported by the Stanford SCS group.
memzero az in crypto_signed_detached. via Stanford SCS.
Add crypto_sign_ed25519_sk_to_seed() and crypto_sign_ed25519_sk_to_pk()
Remove unused variable
On error path, do not set the signature len if a NULL pointer was given.
Comment out loops not being executed.
Version bump
Remove unneeded #include
Update ChangeLog
Rephrase
Thanks @electricFeel for the Elixir wrapper
Reorder randombytes prototypes; mention that randombytes() is a compat API.
randombytes() -> randombytes_buf()
Since randombytes() wraps randombytes_buf(), that's one more function
the linker can strip out until it's actually used by the app.
Thanks to @lvh for the Clojure bindings
Update NuGet packaging to 0.7
Merge pull request #186 from khungus/master

Update NuGet packaging to 0.7
The C standard says nothing about accesses via lvalue expressions with volatile types
Remove unused macros
Revert "The C standard says nothing about accesses via lvalue expressions with volatile types"

This reverts commit fc1bc0718b6c414335db3c602af33517748165f1.