Bug 1004816 (part 1) - Simplify and encapsulate FreeSpan. r=billm.

--HG--
extra : rebase_source : 761a686d5f266fb30a20c57ffc4db1b7bb93c4e1
Bug 1004816 (part 2) - Remove FreeList::infallibleAllocate(). r=billm.

--HG--
extra : rebase_source : f1a2529fcb1afc10a02679ac5074ca99b8ebe691