1.8 Protocol Update

Adds the new 1.8 protocol.
No, it just makes it impossible to store the protocol version as the number that the protocol reports - you wouldn't know whether the client is 1.8 or 1.4.2. This is mainly an API concern - if there was a cClientHandle->GetProtocolVersion(), it would have to mangle the versions somehow (and fear of this happening was my main reason for not implementing such a function in the first place).