Add a guard to the top-level decode_msg/2 function

The rationale of this is to get a more informative crashes in case one
for example accidentally tries to decode a list of integers instead of
a binary.
Test text fragments in the code generator eunit tests
Add a note about branching to the README
Prepare for 3.6