UI cleanup, start of layer list, undo history

Cleaned up the UI a bit, created framework for undo history, started
layering logic, only works for single layer so far though.
Finished up edit history functionality

All edit operations clone the map and are added to an edit history which
can be rolled back and forth.