Added a PolygonCache class to manage the uploading of polygons to VRAM

|SOURCE|
[Common/Memory]
* SafeDeleteArray allows for array-allocated memory to be deleted easily
  without the need to check if the pointer was null before deleting the memory
[Common/PolygonCache]
* This class is intended to be used in a larger PolygonManager, which is
  responsible for uploading polygons to the GPU and only when they are not
  present in VRAM
[Common/Renderer]
* The renderer is responsible for managing the graphics device and allowing
  renderable objects to be rendered
* It is intended to be a frontend for users to create shaders, textures,
  meshes, set render states, and perform other render tasks