Cache warmup

This PR introduces Interface change (new method collect) and, therefore, major version should be bumped if accepted.

It resolves problem https://github.com/RWOverdijk/AssetManager/issues/40 and it's a set forward solving https://github.com/RWOverdijk/AssetManager/issues/131

Please let me know if you have any concerns. 
I'd use `empty()` here. Also move purge logic to a method to avoid too much nesting, and having too much logic in one place.