Refactor interactions between CacheBuilder, Works and CacheManager

CacheManager now hides the details of how it manages (add/remove) the
cache. Workers no longer reach in to the CacheManager to
add/remove/diff.

Knowledge of whether the cache is stale lives only in the CacheManager,
not in the workers.

The Workers now act as a Repository layer and are only a data source
used by CacheManager.
Merge branch 'master' into refactor_cache_builder
Remove a bug fix that shouldn't be on this branch
syntax error
Add method documentation
fix accessing cache as a member variable instead of a method
use #each instead of #map
wrap workers in an array for process_workers in case it comes in as a
single worker
syntax error :(
Merge pull request #51 from RiotGames/refactor_cache_builder

Refactor cache builder