Throw an error if a Message tries to reuse a field number

This is the patch from @muirmanders , but merge-safe.