Person8880/Shine — pull request #410 by Person8880 (2014-11-30 14:09:44+00:00)
Title: 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.

## 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.

## New features
- The vote menu and admin menu now animate on opening. This can be toggled with "sh_animateui".