break out signal handling from System
add crash function to match the semantics of System::abort
refactor SignalRegistrar interface