squash attempts to be resonable in it's memory consumtion.  And although
it does load all every song into memory, it still manages to have low
memory usage.

squash has about a 2 megabyte footprint, that's the size with no songs
loaded.

Approximately 1 to 1.25 kilobytes are used to load each song.  The actual
malloc'd amount is closer to 300 bytes.  The difference between these two
numbers is explained by the extra memory slack each malloc call provides
(e.g. Linux's implementation of malloc only allocates powers of two,
i.e. 32, 64, 128 bytes, etc.).

The breakdown of current usage:

                    data or     allocation  total   multiplier  grand
                    pointers    or multiple                     total
database_info.
songs[].                        Nx
filename            4           50          54      N            54*N
basename[]          12          0           12      N            12*N
meta_keys[].        4           7x          4       N             4*N
key                 4           6           10      N*7          70*N
values[]            4           1x          4       N*7          28*N
[] (of values)      4           15          19      N*7         133*N
---------------------------------------------------------------------
                                                                301*N

* the multiplier for indices' value applies to itself, instead of the
line below it.

So on average we will expect 301 bytes memory usage per song.  Of course,
malloc slack adds considerably to this value.

