* expose more internals of the service shell so that your inheriting
  class can override logging, for instance. Be aware that logging is
  called *before* your RunMain, so you should make sure that logging
  won't fail if called before then.
* downgrade the .net requirement to 4.0 where possible to make it easier
  to use these libraries in (slightly) older projects.