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.
`create_pen` returns an int with the most significant byte set to indicate it is an RGB888 colour.
Pen values without the most significant byte set are treated as palette entries and handled normally.