Fix for ISPN-3877 - SingleFileStore continues to consume space on the disk even if the free entries at end of the file are not in use. This space can be released back to the filesystem

Now we inspect if there are any free entries at the end of the file and delete them from the freeList.
We also truncate the file as such free records are removed.
This happens as a part of the periodic purge cycle.
Fix for ISPN-3894 - SingleFileStore can optimize space usage by coalescing adjacent free entry blocks.

During the periodic purge cycle, we merge contiguous free entries to create larger free entries.
While allocating entries, we see if the free entry being allocated is bigger than a (configurable) factor.
If it is, we split the free entry into two:
1. Of size equal to the length requested (this entry is returned for storing the new entry)
2. Of remainder size (this entry goes back to the free pool)

The factor introduced for deciding when to split a free entry is made configurable and can be specified via the configuration.
The defaults are also set appropriately