Set up the template for the diff_steer effector.

Task @T29 : diff_steer is a pre-effector which implements a rudimentary
diff steering (i.e. turtle-bots or bulldozers) drive system. This was
picked because it's the easiest contact drive to create and because it
is sufficent to the needs of the NRTB alpha.
This compiles but does nothing yet; it's just a configured effector
template.
Revised this module to include three classes.

Task @T29 : After design review, this module needs three objects,
one pre-effector, one post-effector, and a master which creates
them, attaches them to an object, and provides a control interface.
All of this has been roughed out and the really trivial methods
have been created. This code compiles but does nothing as the
heavy lifting remains to be done.
Refactored diff_steer to move the effectors inside.

Task @T29 : Altered the original design to move the effector definitions
inside of the diff_steer class. This makes for a cleaner design and
should minimize the chance of improper independent use of the effectors.
Compiles, but does nothing as the heavy lifting remains to be done.
Checkpoint on diff_steer development.

Task @T29 : Worked out a problem with using atomic<float> as a
communicaiton buffer between the diff_steer class and it's embedded
effectors.  Should be able to move this on along now.
Completed constructors for the diff_steer class.

Task @T29 : The constructor chain is complete. I'm not sure I'm
handling the shared pointers for the effectors in a safe way, so
I put in a test for that in the diff_steer constructor. If not, it'll
blow on construction and I'll need to add new add_pre and add_post
specializations to base_object to accomidate this use case.
diff_steer checkpoint. Interface complete, effectors need work.

Task @T29 : Completed all methods directly belonging to the
diff_steer class. The non-trivial mathiods of the pre and post
effectors remain to be done.
Proved the need for a base_object.add_pre/post(shared_ptr).

Task @T29 : Did just enough unit test to prove we missed a use case.
I need to create add_[pre|post](shared_ptr<abs_effector>) methods to
the base_object struct. This requirement is a blocker for this task.
Merge branch 'master' to pick up base_object changes.

Issue @B5:R : This completes the work on issue 5. Work resuming on
the diff_steer module.
Updated diff_steer constuctor to use smart pointers properly.

Task @T29 : Ready to proceed now that smart pointer reference counts
are correct.
Completed diff_steer::pre::tick()

Task @T29 : This completes work on diff_steer::pre. Next up is
diff_steer::post, followed by the unit test.
Altered diff_steer controls to use percents and error response.

Task @T29 : Implemented the following design changes:

 * the diff_steer::drive() method will accept -100.0 to +100.0 as
   inputs, representing percent of thrust available.
 * the diff_steer::braking() method will accept 0.0 to 100.0 as
   inputs, representing the percent of drag available.
 * the diff_steer::turn() method will accept -100.0 to +100.0 as
   inputs, representing the percent of torque available.
 * Any violation of input limits will result in drive lockdown,
   defined as drive(0.0), braking(100.0), turn(0.0).
 * A new diff_steer::lockdown() method will be added to canonize
   the lockdown process.
 * Each control method will be responsible for checking it's inputs
   and calling lockdown when appropriate.

Need to revisit how braking is handled, and complete the post effector.
Removed braking from diff_steer::pre.

Task @T29 : After some consideration it has become apparent that
braking is task best handed in a post effector. To that end, this
commit removes the braking function from diff_steer::pre as a first
step of moving it to diff_steer::post.

Next up is diff_steer::post, including the new braking function.
Completed all trival methods of diff_steer::post

Task @T29 : Completed setup and integration of diff_steer::post
with diff_steer.

Next up: diff_steer::tick() and the unit test.
Checkpoint on diff_steer::post::tick() development

Task @T29 : Started on skid detection.
Merge branch 'master' into friction_drive

Pick up changes for issue @B6 .
Checkpoint on diff_steer development

Task @T29 : Completed diff_steer::pre::tick(), working on
diff_steer::post::tick(). Compliles, but is not complete. Next up
is figuring out to deal with skids properly.
Checkpoint on the diff_steer development.

Task @T29 : Made progress on the diff_steer::post::tick() method.
Need to complete post::tick() method and the unit test.
Removed the diff_steer_test binary.

The unit test binary for diff_steer was accidently commited earlier
today.
Completed first pass of diff_steer::post::tick()

Task @T29 : Completed the definition work for diff_steer. Compiles
and is expected to work, but unit tests are not complete. Next up
is the unit test for diff_steer.
Refactored diff_steer to move the braking to pre.

Task @29 : Moved the brake interface from post to pre. Code compiles
but will not work properly because braking is not implemented yet.
Next up is implementing the braking function in pre::tick().