Add AverageUDPProcessTime stat to try and get a handle on how long we're taking on the initial processing of a UDP packet.

If we're not receiving packets with multiple threads (m_asyncPacketHandling) then this is critical since it will limit the number of incoming UDP requests that the region can handle and affects packet loss.
If m_asyncPacketHandling then this is less critical though a long process will increase the scope for threads to race.
This is an experimental stat which may be changed.
Record raw number of UDP receives as clientstack.IncomingUDPReceivesCount
Add clientstack.OutgoingUDPSendsCount stat to show number of outbound UDP packets sent by a region per second
Add clientstack.InboxPacketsCount stat.  This records the number of packets waiting to be processed at the second stage (after initial UDP processing)

If this consistently increases then this is a problem since it means the simulator is receiving more requests than it can distribute to other parts of the code.