Add facility to UnterminatedString which allows for decoding failures to cause the field to return bytes instead of strings, and generally make encoding handling more robust