more tidying up

- move basic types and macros into types.h
- adjust core.h and util.h
- provide delete_wavefront_obj()
start on higher level APIs, with Renderable, Model, and Effect classes

- an Effect() wraps a shader program and its configuration, setup with apply()
- a Renderable() is anything capable of sending geometry to the GPU via render()
- a Model() is a Renderable() that can load and render a textured wavefront .obj
- updated test/object.cc (which became much simpler)