Added asserts on allocation failures

I put them as the first thing inside the if block on failure.
I figure, if you want them, then you still only get one check in the case
of success and on failure, the program is going to terminate anyway so it
doesn't matter that the assert does an extra check.  Also with them disabled
you still get the preservation of state and NULL/0 return codes on failure.
Renaming/refactoring for consistency

Removed paramater checking from init constructors.
Also removed /todo questions about checking parameters for other
functions.  I believe it should be the caller's responsibility
to pass good arguments and I'd rather have the code be cleaner
and faster.

Fixed a bug in insert_array_void.

Edited/fixed errors and typos in documentation.