Improving VBO constructors to be more generic

I should probably rename it to buffer and template based on the buffer
enum type?