Define interface MbusHeader and extract common implementation encodeImp and decodeImpl

Unsure I have this right, but the encode/decode unit tests pass so it may be fine.
Use 64-bit uint instead of 32-bit for sequence number in packets to simplify logic.

I was going to use 32-bit unsigned values and implement logic for wrap around,
but I'm going to keep it simple instead. Now we assume that wrap around will never be
necessary, as it is safe to assume that no one sender will send 2^64 bytes from one
continually running process.
Implement AnalyzeAndSequence for delivering packets in causal order.

// TODO:
1. Unit tests
2. Request resend from sender when dropped/delayed packets detected.