Implement a recorder interface, using a custom protocol

A separate client using the lipstick_recorder protocol can request
frames, which lipstick will provide when redrawing.
Send more information to the recorder client

This commit adds a transform argument to the frame event to tell
the client if the frame is y-inverted. It also moves the failure
case to its own event.
Add a request to lipstick_recorder to trigger a repaint
Add an event to notify the recorder client of the buffer requirements