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
What is the advantage of the interface as opposed to abstract methods within Base class? This interface is not being exposed to anything outside of a Base object.