Bugfix, call destroy method in factory

When pooled objects are destroyed, call the destroy() method.
Without this fix it is possible that there is unwanted reuse of
destroyed objects.
Bugfix delete VBO buffers

Unused names have value UNDEFINED not 0.
Clear values when object is destoryed or released

Set type to UNDEFINED when object is destroyed, this is to make sure it
is not accidentaly reused.
Set VBO name to -1 when object is released.