Fix code design for the program type

As discussed in #143, it's better to attach the `Unuse()` function to
the type, even if it doesn't use it, rather than a standalone function
like before (`programUnuse()`)
Add function to unbind a vao (fix #143)
Merge branch 'fix-code-design'