Introduce transient constraints api in Workspace
Currently, the Workspace has no any api to constrain one window above another. This results in having hacks such as keepDeletedTransientAbove() This change introduces a basic api to constrain a given window above another. It can be used for ensuring that transient windows are placed above their parents. It also can be used for stacking the outline window below the move-resize window. Internal windows may also have transient parents. Because of that, this change makes the workspace add internal clients to the stacking order by default. The good thing about it is that it allows us unify some input related code for "external" windows and internal windows.