Helper structure for providing arguments to all SC call functions other than async_call_raw.
It keeps argument lengths separately from the argument data itself.
Argument data is concatenated into a single byte buffer.
Simple wrapper around a boxed byte slice,
but with a lot of optimized methods for manipulating it.
The focus is on reducing code size rather improving speed.
A simple queue struct that is able to push and pop without moving elements.
New items are pushed at the end, just like for a regular Vec.
When popping, instead of performing a regular Vec remove that would shift items,
a start index is moved up 1 position.
When serializing, items before the start index are ignored.