LiterallyCanvas renders using multiple canvases

* New constructor: `LiterallyCanvas(containerEl, opts)`
* `LiterallyCanvas.repaint()` -> `LiterallyCanvas.repaintAllLayers()`
* `LiterallyCanvas.repaintLayer('main|background', dirty=(layer=='main'))`
* All children of outermost element are obliterated after old canvas saved
* CSS consolidated

## Caveats

* Watermark image is not rendered to image exports
  * This is more easily fixable for `getImage()` than `canvasForExport()` and `canvasWithBackground()`