Commit all Chapter 2 examples using objects and w/simplified initialization.
Make data types in obj.h/obj.cpp into C++ classes.  Fix various bugs.

- Use STL containers to manage dynamic memory.
- Add "OBJ *parent" to OBJMESH and OBJMATERIAL.
- Move some OBJ_* functions into OBJMESH, OBJMATERIAL, & PROGRAM
  classes; move remaining OBJ_build_texture() into TEXTURE when that
  class is finally implemented.
- Along with moving functions into difference classes clean up their
  names to remove redundency.
- Optimize various OBJ::get_*() functions by moving loop invariant
  expressions outside of loops.
- Properly initialize flag values in OBJMESH.object.
- Properly test OBJMESH.object flag value.
- Add various enum types to remove "magic numbers".
- Where appropriate convert "unsigned char" variables to bool.
- Use iterated for loops, where appropriate.
- Use interators in sample program to more accurately express the set
  of data which  the "for" loops are iterating over.
- Change the way various other modules in the "common" library access
  the OBJ* data types.