runtime: Make Packet casts more efficient/smaller

We use a union type, so all the memory is overlapping anyway,
and thus no point in picking out a particular member, as long
as a big enough member is used for the type conversion.
Keep a special case for Void typed packets.
runtime: Make parsing code a bit more minimal

Shaves off circa 80 bytes PROGMEM