Added a navigation stack

Whenever workspaces are switched automatically, the new context is pushed to
the stack.  Destroyed windows are removed from the stack.  If the destroyed
window was on the currently active workspace, we switch to the new stack top.
Manually switching to a workspace clear the stack.

Use case: temporarily opening a terminal, and closing it.

Signed-off-by: Morten Hustveit <morten.hustveit@gmail.com>