Datagram version tagging

This PR fixes #24. It is still a work in progress, not ready for merge. However it allows for early review and to signal I am working on it.
This would work, but I think it makes version changes more gradual. You might end up having for example multiple flash commands but implementing only one in the device. Would the python client implement all commands or just the most recent subset? How does he know which one to choose? I prefer having explicit versions that are incompatible.