feat: support undo and redo of layer removals

- Update PowTileMap to trigger events for layer addition/removal and hook these events to create view layers.
- Add LayerRemoveAction that will remove a layer from a given PowTileMap.
- Update TileEditorController to properly deal with lifetime of dynamic view layers and listeners.