Add message ID to unknown payloads
Map between payload identifiers and structs
Move payload header definition into payloads.go
Protocol version check
Error check for verifying payload size after headers
Simplify some error handling
Add a TODO note