Various changes to security system abstraction

Created a security system singleton that holds the security manager.
This way you can register a security manager if you code your own.  Also
created abstractions for the detection and protection units.  Filter in
place to call the protection unit.