Implemented time-out based stop
Replaced print with logging
Protect delpid with os.path.exists
Made running a property, raise NotImplemented exception on run()
Allow overwrite pid to be forced
Handle exceptions and return error codes on them
Added logging, remove pid when daemon exits (debatable)
Moved shutdown handlers definition outside for extensibility
Allow return_on_exit flag and obey the rule