More clean-up on the MD5 module.

- Miscellaneous change of type declarations from "blah" to "const blah".
- Better use of initializer lists for constructors; mostly this cleans up
  a lot of calls to memset().
- Use compiler generated "blah &operator=(const blah &)" to clean up
  many of the uses of memcpy().
- Replace even more arrays implemented as unstructured memory
  (malloc/calloc/realloc) with std::vector instances.
- Better leverage std::vector's abilities by taking advantage of
  push_back() and back() methods.
- Delete unused vector methods:
  o vec4_add
  o vec4_diff
- Add missing version of DirectionalLight::get_direction_in_eye_space().
- Add missing copy of "color" and "type" data members to LIGHT copy
  constructor.
- Add missing copy of spot_fov in SpotLight class copy constructor and
  assignment operator.
- Leverage default constructor when resizing std::vector<MD5MESH> to
  remove initialization code from application code.
- Leverage default constructor when resizing std::vector<MD5ACTION> to
  remove initialization code from application code.
- Optimize MD5::get_action(), and MD5::get_mesh() methods by moving
  loop invariant code outside of loop.