Fix arena_sdalloc() to use promoted size.
Fix arena_sdalloc() to use promoted size (second attempt).

Unlike the preceeding attempted fix, this version avoids the potential
for converting an invalid bin index to a size class.
Don't dereference NULL tdata in prof_{enter,leave}().

It is possible for the thread's tdata to be NULL late during thread
destruction, so take care not to dereference a NULL pointer in such
cases.
Disable arena_dirty_count() validation.
Fix two quarantine regressions.

Fix quarantine to actually update tsd when expanding, and to avoid
double initialization (leaking the first quarantine) due to recursive
initialization.

This resolves #161.
add a version of rallocx taking old and used sizes

Using sized deallocation makes deallocating the small size classes ~10%
faster and the used size avoids copying unused space at the end. This
function is intended for widely used data structure implementations
where performance far outweighs the need for a convenient API.

The caller can set the used_size parameter to old_size if there isn't a
more specific value. It can be assumed that a caller aware of used size
will also have the old size, because in reasonable code they will either
be equal or tracked as length (used) and capacity (old).

The used size is especially useful for vector / string concatenation. A
good implementation will reserve space using a geometric growth pattern
to amortize the cost in a loop. An individual concatenation will often
require too much space to reused the unused space, despite it being up
to almost 50% of the vector capacity.

Closes #101
take advantage of the srallocx used parameter
add documentation / tests for srallocx