Added sensor_rec and panopticon to sim_core h and cpp.

Task @T59 : Defined implemented sensor_rec and panopticon. Both
are complete and compile properly, but have not been integrated into
the sim_core cycle yet.
Added mutex protection to panopticon.

Task @T59 : closed a very small risk where the list's shared_ptr
could have been returned to a caller while it was being updated.
While the window opportunity was very short I just did not feel
comfortable trusting to luck.
Integrated panopticon into sim_core.

Task @T59 : A private panopticon was added to sim_core and a new
public method "contact_p contact_list" was added to the sim_core
interface. sim_core::run_sim() was altered to update the panopticon
on each game cycle after collision resulution. Ready for unit
testing.
Integrated sim_core::contact_list() to unit test.

Task @T60 : Updated the sim_core unit test to validate that
sim_core::contact_list() is returning valid results. This completes
sim_core changes required to added sensors to the simulated bots.
Altered sim_core so it could be used as a singleton.

Task @T60 : changed sim_core::sim_core() to have a default value
for the time-slice and added a method to allow the setting of the
time-slice value before the simulation is started. Attempting to
set a time-slice value after sim start will throw.
Altered main to use the global_sim_core singleton.

Task @T60 : Main now instanciates the global_sim_core singleton
to allow other classes, particularly sensors, control and monitor
routines to access it in controlled ways. Built and unit tested.
Starting the radar_mk1 class

Task @T60 : Empty templates for the radar_mk1 sensor class. Just a
bunch of empty files at the moment; it compiles but does nothing.
Checkpoint on radar_mk1 development

Task @T61 : Completed the radar_mk1 header and all methods except
contacts(), which does the filtering and returns the contacts list.
Compiles, but still does nothing due to incomplete contacts() method
and unit test.
Checkpoint on the radar_mk1 development

Task @T61 : Finished calculations in radar_mk1::contact_list(). Still
need produce the formatted output string.
Checkpoint on radar_mk1 development

Task @T61 : Completed the radar_mk1 class. Ready to start coding
the unit test.
Refinements to radar_mk1

Task @T61 : Altered so that velocities returned are relative to the
object to be consistent with the other returned values. Minor cleanup
in formatting to make the output easier to parse.
Checkpoint on radar_mk1 unit test development.

Task @T62 : Started on the unit test. Creates two objects, starts
a sim_core. Need to add the objects to the sim and then verify that
each object sees the other in the proper relative locations.
Checkpoint on the radar unit test.

Task @T62 : Well, this compiles and builds, but it certainly is not
producing the output I'm expected. No time to debug now, so I'm
checking this in to look at it later.
Added a visual check to the panopticon output.

Task @T61 : While unit testing radar_mk1 I discovered an apparent
issue with the panopticon populating contact records. This has been
addressed and quick dump to screen has been added to the unit test.
Corrected an error populating panopticon.

Task @T61 : While working on radar_mk1, discovered that we were
not populating the radius field of sensor_rec. Coorected.
Checkpoint on radar_mk1 development.

Task @T62: Added some temporary debugging code; still getting
nans in all the triplet fields in the sensor_rec, while all the
other fields are fine. I'll be heading back to sim_core to see
where I'm screwing up.
Made the contacts list a vector of shared_ptrs.

Task @T60 : We've had some issues with data quality coming from the
panopticon.. the vectors have been corrupted while the singular values
are fine. As an experiment, I altered panopticon to pass a shared_ptrs
to sensor_recs. We'll see how this goes...
More revisions to panopticon.

Task @T60 : Reverted the changes from the previous commit and altered
panopticon so that the add mathod takes a base_object and creates
the sensor_rec in the list context. This both cleans up the code in
sim_core::run_sim and makes experimentation easier. The problem we've
been chasing may still remain.
Corrected the panopticon issue (I think!)

Task @T60 : Rewrote panopticon to use simple data copies instead
shared pointers.. and now I can not make it fail. I'm going with
this fix.
Checkpont on radar unit test.

Task @T62 : There are still invalid results, but this version at
least improves transparency to the process. With luck, and perhaps
some congnitive surgery, I can resolve this in the next few days.