VID-2142 Create a way to clear the VideosModule Video Cache

* Refactored the VideosModule into different subclasses for each video sources
* Added cache purging code
* Incorporated James' AsyncCache changes
It looks like the only param which is getting passed in is still userRegion. Is there a reason for making this a more general array? I find it easier to know what it's expecting with named parameters if possible, especially for the subclasses.