Fixed a double definition error.
Introduced a class for meshes.
Added a buffer base class.
Readded the swap function to program. It was needed for move operations.
Readded the swap function to shader. It was needed for move operations.
Made vertex_array_object take shared_ptr's instead of references. Added the posibility of binding to the element array buffer.
Made changes to the rendering code.

Now entities don't have custom code for rendering. Everything is handled
by the drawer and render_subsystem classes. Only the VAO, program and
related arguments need to be provided.
Adapted the test client to the new rendering code.
Merged new rendering code.