Commander eject vote percent setting

Allows you to override the game's default (currently 0.5).
All talk should obey muting settings
Correct arguments to CanPlayerHearPlayer
Easier function hooking

Much easier to set up various kinds of hooks into class and global
functions.

Also fixed the logging plugin logging a team change when it had been
denied.
Place functions in Shine.Hook

not the main table...
Explanatory comments

If anyone wants to extend Shine, they'll be interested in these to add
hooks.
Fix for potential nil values in a table

table.Shuffle assumed all values existed, now it makes sure it uses an
array with no holes in it and will restructure the input table if it
does.
Vote random co-operates with map vote JoinTeam

If the map vote plugin is denying the team join, then vote random should
stop and not process it.
Merge pull request #127 from Person8880/develop

Fixes and hook rework