Add MIT license.
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.