Huge refactoring of most files

## Refactoring/improvements
- Cleaned up many areas of repeated code.
- Sending network messages is now standardised using `Shine:ApplyNetworkMessage()`.
- Notification rate limits now all use `Shine:CanNotify( Client )`.
- Added "OnFirstThink" event, which is called on the first think after loading.
- All permissions are now cached, not just those for groups that inherit from other groups.
- All code relating to the old NS2Stats mod has been removed.
- Added the missing "Halt" mode to global hooks.

## Bug fixes
- Fixed commands with `RestOfLine = true` cutting off UTF8 strings early.
- Fixed `PrintTable` not printing if any of the values contained format strings.
- Fixed server rates not always being set.
- Fixed client only plugins showing in the admin menu plugins list.
- Fixed afkkick and pingtracker not working correctly if reloaded mid-game.
- Fixed mapvote nominations claiming that nominating a recently played map succeeded when in fact it did not.
- Fixed setting the bandwidth limit too low by default in NS2: Combat (the default there is 35KB/s compared to NS2's 25KB/s).

## New features
- The vote menu and admin menu now animate on opening. This can be toggled with "sh_animateui".
- Number argument restrictions can now specify `"Strict": true` to block a player from using the command if they enter a number outside the allowed range instead of just clamping the number into range.