New PacketVersion enum + cleanup

Moved special_client() function inside the class Client and renamed it
to a more descriptive name: might_use_v2_handler()

Added PacketVersion enum
More steps for packethook refactoring

Extracted a few functions, which makes the main code cleaner. Once
PacketVersion is used by the PacketRegistry, many of those functions
will be further simplified. Still in progress.