* Coerce in both directions
This is what I have been using in the voting app, via decode_bytearray.
Some smaller fixes are included too, such as exposing the `state` type
of a contract, and wrapping/unwrapping the `{tuple, {...}}` wrapper
produced by aeser.
Add Contract.state to the AACI typedefs
dry_run_result and tx_result
Coerce now has the ability to convert BACK from the format aebytecode
understands, which allows dry_run_result and tx_result to decode the
cb_... stuff and turn it into the kinds of erlang object that could be
passed right back into vanillae, for example. More than anything,
though, these functions just give you the data in the form that you want
it for pattern matching and getting actual work done.
expose decode_bytearray instead of tx_result
wrap/unwrap tuple atom correctly
* better coerce error accumulation
Now coerce errors all have the same format: [{error(), [path_steps()]}]