Dock layout api

This adds a programmatic layout api, user-definable styles, and removes the need to hold shift while undocking a tab.