Added suggest config packet support
Reworked a few things associated with voice decoding

Signed-off-by: Martin Evans <martindevans@gmail.com>
OMG WE HAVE VOICE!

Ok, don't get overexcited! This is only *very* basic Opus support, and right now it's pretty messy (hey, it's 1:44am, I'll clean it up tomorrow). Opus decoding is based on native Opus DLL (boo) and the C# wrapper from Aural (https://github.com/JohnACarruthers/Aural). We still need support for the other codecs, but that's not important right now. What we *really* need is support for reordering packets (and dropping late ones) and a jitter buffer. I *think* then Opus support is complete and we should just be ale to drop in the other codecs if that's done right.

Other changes:
 - Added GetCodec method to IMumbleProtocol, this gets a *user specific* codec of the given type (implemented by BasicMumbleProtocol so most people can ignore this)
 - Changed "long session" to "uint session", because sessions are uints not longs...
 - Added a GetCodec method to User
 - Compltetely removed UdpTunnel, it's never used in the protocol!
 - Checked the implementation of ReadVarInt64 against the mumble source code, it's correct (added a comment indicating this)
 - Rewritten LeadingOnes to use a lookup table
 - Rewritten LeadingOnes test to iterate over *all possible bytes* (gasp). /s

Signed-off-by: Martin Evans <martindevans@gmail.com>