Reduced memory usage, especially on Windows 8

Reintroduced the forced garbage collection to fix out-of-control memory usage on Windows 8. Every three seconds the monitor loop will now run a garbage collection instead of sleeping the thread. This has the effect of preventing the memory usage from compounding over time... without this forced GC it was common to see Windows allocating all available system memory to the uploader after a period of time, even though the number and size of Java objects was small and fairly constant. It's not apparent why forcing the GC is necessary but on my test Windows 8.1 it does seem to have completely fixed the problem.

See #343 and #380 for more details. This should fix the various problems people have reported with memory usage such as #279, #281, #305, #330, #354, #428, #433, but I will test some more to make sure before releasing.
Merge pull request #449 from gtch/master

Reduced memory usage, especially on Windows 8