Add preliminary support for multiple layered drawing surfaces.
Allows, for example, static content to be loaded into one layer and
remain unmodified while the above layer contains animations.
Particularly useful for drawing PNG or JPEG UI elements which are
then overdrawn with text or animated elements, without paying the
cost of loading/decoding every frame.
A properly aligned zero length pixel span would cause a single
pixel to be drawn, the length overflowed and a subsequent
2GB of pixels drawn by the main loop.
Add a simple check to discard any attempt to draw zero length spans.
Fixespimoroni/pimoroni-pico-rp2350#32
Fix byte alignment to use the pixel index, rather than just the x-coordinate.
Prevent new rows from being erroneously byte-aligned in displays without an even width (eg: Pico Display portrait).