VID-2142 Refactoring of the VideosModule

* Split different video sources into subclasses
* Added cache purging code
* Incorporated James' AsyncCache changes

(cherry picked from commit aa42777688210799ba63201ca345438fb3aa03c3)
VID-2142 More docs, Aync cache stuff and cleanup

(cherry picked from commit 7d8b350bc639281c579c6329122f19106a108851)
VID-2142 Some fixes after code review meeting

* Moved modules into new namespace
* Cleaned up some unused code

(cherry picked from commit 4e5b0d29ddcb76a5174e95084698e0e5052a9c0a)
VID-2142 Take care of required methods with an interface

(cherry picked from commit b2f65b01a0dc7fc2ab0ddc86591556bb264121b6)
Cherry-pick of 057a45bedbe656315469afaa420839c3dd91e268
conflict: extensions/wikia/VideosModule/VideosModule.class.php
VID-2142 Updated docs, fixed logic and rmeoved unused code

(cherry picked from commit 934d6d63b42ac1e2f6a771ec595e621221a590bc)
VID-2142 Update unit tests to use one of the new module classes

(cherry picked from commit 224b90ce3cf933fa5295200983d51f615fc434db)
VID-2142 Make sure the tests pass!

The isRegionallyRestricted method needed to accept null values.  Can't type hint here.

(cherry picked from commit a95eb5d8785bb97b07221174b150cf6b1b88d0b8)
VID-2142 Make these methods abstract

(cherry picked from commit 17ec438087c2ce9232aff95a40bafc7dbb145254)
VID-2142 Removed unused msg parameter.

(cherry picked from commit a3d3bf52db29b7e5fd0df3b5c9a359af96e32b46)
Merge pull request #5825 from Wikia/VID-2142-3

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