Checkpoint on base_object rotation fix.

Bug @B6 : Started definition new struct rotatable, which will be
the basis of all rotation management math. Not complete or
compilable yet.
Completed trivial methods for "rotatable".

Bug @B6 : Constructor and trim() methods complete. Still remaining
are the apply_force() and get_cart() (get cartisian) methods.
Checkpoint on the BO rotation fix.

Issue @B6 : Added code to apply force to rotatable.  Need to do the
get_cart() method next.
Rotatable: removed get_cart(), added get_cos() and get_sin().

Issue @B6 : Changed my approach to compare using cosine rather than
doing some kind of half-a##ed to/from polar nonsense. Rotatable is
now complete. Next up are changes to base_object to incorporate
clean rotation tracking.
Checkpoint on the base_object rotation fix.

Issue @B6 : Started on changes to base_object itself to use the new
rotatable struct. This compiles but is not fully functional, as the
rotation code (not ever effective before) is commented out and marked
for updates.
Checkpoint on the base_object rotation fix.

Issue @B6 : reorganized base_object::apply() to group the translation
and rotation code separately. Next up is to complete the rotation
application in base_object::apply().
Added rotation to base_object.apply()

Issue @B6 : Added the code to base_object.apply() to properly handle
torque, rotation and object attitude (I think!). This code compiles
and should be doing the correct work, but has not be unit tested yet.
Next up is updating the base_object unit test.
Fixed clone test in base_object_test.cpp

Issue @B6 : First work on bringing the unit test into line with
the new rotation functionality.  More unit test work to come.
Checkpoint on the base_object rotation fix... refactored rotatable.

Issue @B6 : Refactored rotatable and made changes to the existing
methods to allow lazy recalculation and to better ensure rotatable
is used properly. Need to finish the new rotatable methods before
starting the unit test.
Completed refactoring of the rotatable struct.

Issue @B6 : This should complete the rotation math for base_object
(no really, I mean it!). Next up is the unit test for rotatable.
Made rotatable::dirty atomic and added rotatable copy constructor.

Issue @B6 : Decided to avoid a threading risk by making the dirty
flag atomic. This necessated a new copy constructor because
std::atomic does not have a copy constructor itself.  That's the
last of the detail changes to the rotatable design after review.
Next is the rotatable unit test.
Unit test for rotatable set, add get_cos, get_sin and recalc.

Issue @B6 : Completed a simple test sequence to prove that
the set, add, get_cos, get_sin and recalc are working, and that
the automatic lazy calculation is working properly. Unit test is
not complete yet, still rotatable::scale, angles, apply_force
and base_object::apply() tests added or enhanced.
Completed rotatable unit tests.

Issue @B6 : Completed all unit tests for rotatable itself. I need to
create one last test to enure that base_object.apply() is properly
accumulating rotational force.
Completed base_object rotation fix.

Issue @B6 : Completed all unit tests. Torque is being accumulated
into rotation and rotation in to attitude properly.  This completes
the bo rotation fix task.
Merge pull request #14 from fpstovall/bo_rotation_fix

base_object rotation fix; base_object now processes rotation and torque properly.
Merge branch 'master' into friction_drive

Pick up changes for issue @B6 .