Started work on abstract bot interfaces.

This module will provide several interfaces bot objects may use
and which may be required for bot modules to be used. I should have
factored this stuff in ages ago, so we'll have to pause here and
get them done. This is a requirement to prevent the rail_gun and
other modules from becoming too messy or co-dependent on a
specific bot class.
Created interfaces and started on unit test.

Defined three abstract classes which define interfaces for modules
to use communicating with bots. They are "bcp_sender",
"cmd_interface", and "tickable". bcp_sender provides a method to
allow the module to send a message to the BCP; cmd_interface allows
the module to present a commmand as if it came from the BCP, and
tickable allows a module to plug into a bot's scheduling system.
All are pure virtual. Working on the the unit test now, which will
demonstrate typical use scenarios.
Checkpoint on the bot_interfaces unit test.

Completed quick checks on the bcp_sender and cmd_interface
interfaces. The checks are not formal (i.e. not validated in the
code) but are simple and easy to verify manually. Still need to
design the test for the tickable interfacea and automate checks
for all three interfaces.
Completed unit bot_interfaces unit test.

As this module only defines abstract interface classes, the only
testing consists of making sure the interfaces are usuable and
provide the functionality promised. To that end this unit test
implements each of the abstract classes and uses them for simple
tasks; a failure would be a compile failure.  This builds,
compiles and runs as expected. This module is ready to merge.
Added bot_interfaces to the sim_engine Makefile.
Altered bot_mk1 so that it is a child of abs_bot.

bot_mk1 now implements the abs_bot interface to allow easier
creation of functional modules such as the rail_gun. Tests
clean ad is ready to use.
Merge pull request #23 from fpstovall/bot_interface

Bot interface -- simplify the addition of bot functionality.