Experimental method for reading byte arrays

Every packet that carries a byte array as part of its payload
seems to prefix that byte array with a field of type 'short'
carrying the length of the array to come. Since this is very
similar to how strings are transmitted, we'll simply borrow
our string-reading code and adapt it slightly (in a byte array,
the smallest unit of interest is a single byte, while in a
string, it's a character of two bytes).
Fix typos in Protocol module

* Remove useless 'do' inside function definition
* Consistently use 'packet_id' rather than just 'id'