keep track of fragment sizes more correctly

Otherwise, the large fragments allocated when a
malloc request can't be allocated from existing
fragments are never split, leading to very poor
memory utilization.
Merge pull request #1 from daveho/master

allow splitting of newly-allocated memory chunks