Merge remote-tracking branch 'remotes/billlutton/master'

# By billlutton
# Via billlutton
* remotes/billlutton/master:
  Disable shadow timer if not running at 'natural' speed.
  Minor change to some logging that is commmented out for later use.
  The primary change in this commit is to add a 'shadow timer' to the fmod wrapper to provide 1ms resolution to the getPosition query.  Basically the timer follows the play state of the fmod channel and provides the getPosition answer in lieu of using the position value from the channel.  As a failsafe, we monitor the difference between the timer and the channel position and if for some reason the timer is more than 50mS 'off' we reset the timer to match fmod.
  This commit fixes log archiving/rolling when using Profiles.  Profiles mode programatically messes with NLog config... Unfortunately it suffered from a copy/paste error and was overwriting the ArchiveFileName for a target with the FileName for that target.  The effect of the defect is that once a log file gets to a million bytes in size, each log statement there after will throw an exception.
  Position to center parent.
  Removes the 'recording' stuff from the 'intervals' branch
  This commit implements the new scheme for update intervals: -New Tools/Options dialog to allow editing of the update interval. -This is persisted in SystemConfig as DefaultUpdateInterval. -All controllers use this update interval unless they override (none now). -Removed the ConfigControllers UI for setting this on a per controller basis. -Removed controller base class persistence of per controller update interval. -Also, moved 'Instrumentation' under the Tools menu.
  bring Blinky up to snuff
  Set default DefaultInterval to 46 mS (2 fmod frames). Also remove some dead code in controllers (old overrides of updateInterval).
  The update cycle type is a main driver of cpu usage.  Previous checkins have provided the instrumentation to prove that with 'hard coded' longer update times. This checkin removed hardcoding of update times in controllers and allows user control over these update times: -The ConfigControllers dialog now allows user setting of update interval for each controller. -New controllers default to a new SystemConfig DefaultUpdateInterval (manual edit of xml file required to change it). -The PetitionForUpdate threshold (called by each controller thread) is now calculated dynamically from the fastest controller update time.
  Fall back to 'default' update interval
  intrumentation tweak
  Enable BlinkyLinky builds. Implement 'fake' mode if ip addr is 1.1.1.1
  trivial cleanup
  change default intervals to 50 mS
  new intrumentation value shows min/avg/max vals
  mostly instrumentation changes but also include tweak to 'unwind' processing in Element.cs Update.
  cpu usage way down, just checking in as a reference point...
  initial data gathering...