Re-factored principally so that blocking operations can be managed. Thanks also to Nilanjan Raychaudhuri and Rich Dougherty for their contributions.

A self populating cache is now used in order to avoid any thundering herd issue.
Merge pull request #2702 from huntc/async-asset-controller

Re-factor of the asset controller including caching