Hold field values as function parameters during decoding
Hold field values as function parameters during decoding

This eliminates the need for generation of add_field_<Msg>_<Field>
functions as well d_reverse_toplevel_fields_<Msg> functions.

On one hand, the generated code saves checks that the Message function
is a valid #<Msg> record in each add_field_<Msg>_<Field> function, but
on the other hand, all registers needs to be saved to and restored
from the stack in the following cases:
- when calling an external function for decoding, currently only
  unicode:characters_to_list for strings
- when decoding a sub message
- when reversing any sequences after having parsed
  the whole message.

All in all, it seems to improve by 3-15% decoding in the benchmark.

When the number of fields in a message is >250, we switch to the
previous method since a function can have at most 255 parameters.

mmmries/gpb,olgeni/gpb