some small codec optimisations
- encode and decode field types as characters rather than strings
- construct shallower iolists by cons'ing instead of appending
- avoid construction of intermediate binary for tables and arrays
Merge bug 25942