[glass] Eliminate unnecessary memory allocations
When committing changes, we were allocating blocks for all levels of the
built-in cursor in each writable table, even those that weren't in use.
The worst case is a really small database with all optional tables
existing which would have 54 unused allocations of blocksize + 8 bytes,
which with the default 8K block size is ~432KB per WritableDatabase;
if you explicitly ask for 64K block size it'll be ~3.4MB.
For a more typical WritableDatabase it's probably going to be more like
half these numbers.