Handle no VAO being bound without crashing

* Binding VAO 0 is invalid in core GL, but it's common for programs to do
  so we want to support it - we can show an API error/warning to indicate
  that it's wrong.