Remove coupling to Factory::getLanguage()

This is a very crude decoupling of the Framework to `Factory::getLanguage()`.  This modifies `Language::getInstance()` to accept a null `$lang` param and instantiate the Language class (using the `$default` property to set the language) and stores both the nulled input and the language input to the `$instances` container.  I haven't taken a look at removing said container for the moment, but since we're on a battle against statics, this is surely next.

What would probably be the best solution, IMO, would be the downstream application to handle loading the Language object allowing us to drop `Language::getInstance()` and the static container.  But, that's all in due time.