Make size non-optional for Memory::new.

Rationale for this is that the functions that do bounds-checking do not
function without it, and those that don't yet do bounds-checking will
at some point in the future. So, there's just no reason to allow
zero-size wrappers when they don't make sense and are error-prone as
hell.
Add note about not checking for null/zero length in realloc

It might not have been obvious that the missing call was intentional,
but it is. It's fine to realloc on NULL/zero because both cases imply
a new allocation that the memory object will take ownership of.
Remove unused variables and labels.
Make sd_set_string a wrapper around sd_set_string_nullterm.

This simplifies things a bit since I can just check for args in one and
forward them along.
Change default wrapper alignment to SIZEOF_VOIDP.

I figure this way, at least if realloc! or dup is called, the new memory
will have a reasonable alignment. In reality, this will almost never
affect any allocation or wrapper except in very weird cases where things
are going very wrong.
Update sd_memory_new (Memory::new) documentation.

Notes that size is not optional, must be > 0. Also points out that it's
aliased as wrap and __wrap__ and the rules for those.

Updates default alignment note.
Check for NULL address on Memory::new and fail if it's NULL.

There's no reason to have or want a Memory object that wraps NULL. You
can sort of get these by allocating and then calling free!, but this is
not a recommended workaround to get your weird NULL fix and I recommend
you just live with not having NULL.
Change use of 'buffer' to 'block' throughout comments/docs.

Buffer was confusing, block seems friendlier.