Handle glCreateShaderProgramv returning 0 if the call fails
Handle glCreateShaderProgramv returning 0 if the call fails

* The majority of GL calls that create objects are pretty failure proof
  since they don't really do anything apart from create/allocate. In the
  case of glCreateShaderProgramv though it requires the call to be valid
  e.g. the type enum to be correct, so it can actually return 0 if that
  happens.
* If we don't check for this then we end up creating an ID and program
  for name 0 which causes all sorts of problems.

Zorro666/renderdoc,googlestadia/renderdoc,Zorro666/renderdoc,Zorro666/renderdoc,baldurk/renderdoc,etnlGD/renderdoc,Yours3lf/renderdoc,etnlGD/renderdoc,victor-moya/renderdoc,Lssikkes/renderdoc,googlestadia/renderdoc,michaelrgb/renderdoc,Lssikkes/renderdoc,victor-moya/renderdoc,TurtleRockStudios/renderdoc_public,Lssikkes/renderdoc,etnlGD/renderdoc,victor-moya/renderdoc,Velro/renderdoc,Velro/renderdoc,Velro/renderdoc,baldurk/renderdoc,Lssikkes/renderdoc,TurtleRockStudios/renderdoc_public,Velro/renderdoc,michaelrgb/renderdoc,etnlGD/renderdoc,Lssikkes/renderdoc,Yours3lf/renderdoc,victor-moya/renderdoc,TurtleRockStudios/renderdoc_public,etnlGD/renderdoc,Zorro666/renderdoc,Yours3lf/renderdoc,cgmb/renderdoc,victor-moya/renderdoc,Yours3lf/renderdoc,victor-moya/renderdoc,Zorro666/renderdoc,TurtleRockStudios/renderdoc_public,baldurk/renderdoc,Yours3lf/renderdoc,cgmb/renderdoc,etnlGD/renderdoc,baldurk/renderdoc,cgmb/renderdoc,michaelrgb/renderdoc,cgmb/renderdoc,Lssikkes/renderdoc,baldurk/renderdoc,TurtleRockStudios/renderdoc_public,googlestadia/renderdoc,Zorro666/renderdoc,Velro/renderdoc,googlestadia/renderdoc,TurtleRockStudios/renderdoc_public,michaelrgb/renderdoc,michaelrgb/renderdoc,baldurk/renderdoc,Yours3lf/renderdoc,Velro/renderdoc,googlestadia/renderdoc,cgmb/renderdoc,googlestadia/renderdoc