General bytecode RAM improvements

There are 2 commits here, each one attempts to reduce bytecode RAM usage.  Details in the commit descriptions.

Overall this gives reduction of around 8-9% RAM.

Next step would be to improve qstr storage which seems to be very wasteful at the moment (each new qstr lives in its own block in the heap, and this wastes the end of the block to align it to a GC block size).  Estimates indicate around another 10% reduction in RAM if qstrs are clumped together.