Added memory allocation on the GPU to PolygonCache's Create member function

|SOURCE|
[Common/PolygonCache]
* Realised that the VAO cannot work for all caches
* Added a VAO to each cache
* Create allocates VRAM, no error checking is performed, so the VRAM could be
  filled and not reported back to the user
Merge remote-tracking branch 'origin/master'