Improvements to the whitelist

Improved modularity and encapsulation of code.

Improved auto-whitelist feature.

Added a remaining play-time UI element that is displayed to
non-whitelisted players when the whitelist is turned on while they are
playing.