Fixed some issues with quitting while on-duty

Added a new callback, OnPlayerDisconnected which is called 100ms after
the player has disconnected (and thus after all OnPlayerDisconnect code
has run) to address some sequencing problems with variable assignment.
This problem resulted in IsPlayerOnAdminDuty returning 0 if the player
was on duty when they quit which caused the quit code to try and save
the player's character.

Also modularised some variables related to accounts and load states.