hook.lua : unlimited return values & non gamemode

Updated hook.lua so the hook system is no longer restricted to 6 return values. ( This was changed before but seems to of changed back last year? )
hook.Call( "PlayerSpawn", nil, ... ) would still call GAMEMODE functions, it never used to do this and it's not documented to do this, so made hook.Run use hook.Call with the gamemode table instead of assuming hook.Call will always want to use the gamemode.
Localized Hooks table, undocumented people should be using hook.GetTable() anyway.