Backdrop node

Backdrops are represented in the script using the new Backdrop node type - it is necessary to store them as a node so that they can persist in the script across save and load. The vast majority of the implementation however is in the BackdropNodeGadget, which implements the drawing in the NodeGraph. Backdrops have a title which is rendered large to be visible when zoomed out, and a description in smaller font which is word wrapped automatically as the backdrop is resized. Selecting/deselecting a backdrop by clicking in the title area will select/deselect all the framed nodes, so that subsequent drags will also move the contents. Backdrops can be resized by dragging on their edges.

To ensure that backdrops are drawn behind everything else, GraphGadget::doRender() has a bit of a hack to enforce ordering - I think we can do better here but I'd like to revisit that later when we have a few more use cases for some sort of layering API in Gadget.

Different colours for backdrops remain as a todo - I'd like to address that in a separate pull request where all nodes may be displayed with custom colours, not just backdrops.

Fixes #153.