Allocate fewer objects when parsing 2 and 4 byte chunks.

This is achieved by adding getBytes2() and getBytes4() to streams, and by
changing int16() and int32() to take multiple scalar args instead of an array
arg.
Avoid allocations in bidi().
Avoid more allocations in bidi().
Avoid allocations in executeCommand().