Allow the thread watchdog to accept an alarm method that is invoked if the timeout is breached.

This alarm can then invoke this to log extra information.
This is used in LLUDPServer to show which client was being processed when incoming and outgoing udp watchdog alarms are triggered.
Log warning if we try to remove a UDP client that has already been removed.
Make change to fix Windows builds
Mantis 6044 Building master currently fails.

Add missing reference to System.Core

Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
Add collision sounds to the asset set
Don't send kill object messages to clients when a child agent is closed.
Record the fact that child agents can have asset transactions.

Also change code to grab the agent asset transaction module once.
Fix bug with "kick user" reducing agent counts by 2 instead of 1.

This is done by making the kick user command call IClientAPI.Close() rather than routing through Scene.IncomingCloseAgent(), which also called IClientAPI.Close()
DisableSimulator for child agents is moved from IncomingCloseAgent() to RemoveClient(), this is not a functional change since IncomingCloseAgent() always ends up calling RemoveClient()
Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
Remove duplicate update of user count in Scene.IncomingCloseAgent()

This is already done in Scene.RemoveClient() which IncomingCloseAgent() always ends up calling.
Go back to calling IncomingCloseAgent() in the "kick user" command for consistency instead of IClientAPI.Close() directly.

This no longer double counts child agent removals
Don't make duplicate call to ScenePresence.Close() separately in ETM.DoTeleport() if an agent needs closing.

This is always done as part of Scene.RemoveClient()
Also refactors try/catching in Scene.RemoveClient() to log NREs instead of silently discarding, since these are useful symptoms of problems.
Store already retrieve IClientAPI in IncomingPacket structure for later use rather than doing another retrieve on dequeue.

Instead of checking whether the client still exists by trying to retrieve again from the client manager, this patch gets it back from IncomingPacket and checks the IClientAPI.IsActive state.
Remove null checks at top of LLUDPServer.ProcessInPacket().  Neither packet nor client are ever null.
Add regression test for client logout due to ack timeout.
If logging a client out due to ack timeout, do this asynchronously rather than synchronously on the outgoing packet loop.

This is the same async behaviour as normal logouts.
This is necessary because the event queue will sleep the thread for 5 seconds on an ack timeout logout as the client isn't around to pick up the final event queue messages.
Instead of retrieving the known client again in LLUDPServer.RemoveClient(), check the IsLoggingOut flag instead.

This is slightly better thread-race wise
Stop sending a DisableSimulator packet in LLClientView.Close(), which is a duplicate for child agents and unnecessary for root agents.

Close() already calls Scene.RemoveClient() which sends the right eq or udp DisableSimulator message to child agents.
Fix regression in 5f4f9f0 (Fri Jun 8 2012) which stopped "show stats" and json stats from working
Add documentation to AllowGodFunctions setting in [LL-Functions]