Use VAO

Previous versions of triangle sent the data over every frame. This
version uses VAOs to send the data once at initialization time.