layout.less: handle hover buttons through visibility

using visibility instead of display reduces flickering on hover
models.js: add observable models
editor.js: further improved editor