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
The interface is being inherited by the children of this abstract class.  The advantage is that I get IDE and compile time errors with the interface if I fail to implement these methods in the child classes whereas using abstract methods merely suggests I could override the methods and only errors if I try to call one.