Revised Font object & Standardized Shader Usage

Shaders are passed down to objects when they are created by their
respective factory/manager. These managing objects have the shader set
during game::init() and then they can load assets and instantiate
objects with said shader.

The BFont class was inefficient so it has been used as a blueprint for
creating the FFont class. The FFont class has a global instance "Fcout"
which can be used to display text of any size at any rotation with any
alpha, with either integrated font, and at any location on screen.

The GUI is primed for creation.