Fix GL_INVALID_VALUE when creating a context

This was caused by the vertex array object not existing yet when
do_in_context was called in set_window. Solved by initializing it to
zero and checking if it exists.
Fix GL_INVALID_VALUE errors in model::draw

model::draw previously caused GL_INVALID_VALUE errors when drawn with a
vertex shader that didn't use the 'normal' or 'texture_coordinate'
inputs.