Support a maximum disk cache size in -cleanDisk.

Previously, -cleanDisk would only remove cache files that were older
than the configured expiration date.  This allowed the disk cache to
grow significantly if a large number of resources were cached over a
short period of time.

This change adds a second (optional) size-based cleaning pass that
removes files from the disk cache until its overall size falls below
half of the configured maximum size.  Older files are deleted first.

The size-based pass is disabled by default (maxCacheSize == 0).
Merge pull request #353 from jparise/max-cache-size

Support a maximum disk cache size in -cleanDisk.
This is an attempt to avoid the crashes in #341.

It won't fix the underlying issue but I hope it will avoid it in most cases.
The various crash reports indicate the underlying download operation is being
freed before the async block in dataReceived is being executed.

This fix change tries to avoid every calling the async block.