Improve invalid free reports by checking that the pointer is valid on
free. This is relatively cheap for the primary, but is somewhat
expensive for the secondary as it involves locking.
This patch also fixes up some minor grammatical errors in the existing
reports, namely 'of a X-byte region' instead of 'of X-byte region'.
That's O(live allocations).