Handle monitors via RandR
Consolidate RandR fallback
Set ID of monitor when adding it
Select focused desktop when selecting monitor

Also:
- Observe `auto_alternate` with `use_monitor`.
- Update `last_mon` when a monitor is removed.
Handle removal of focused monitor
Three arguments is enough for `focus_node`

The fourth argument of `focus_node` was introduced to avoid calling
unneeded functions from `manage_window`: the reason is not good enough
to justify the existence of that extra argument.
Refactor focus_node and select_*

The select_* and focus_node where initially made independent as to
observe the --follow option. But this is in fact not necessary.
Set focus pointer when inserting nodes
Always update focus and history when inserting
Handle remote focus corner case in transfer_node
Avoid NULL node and non-NULL root in focus_node
Fit windows in their updated monitors
Only call `arrange` when needed
Don't try to `arrange` empty desktops
Add a few debug messages
Still trying to minimize the calls to `arrange`
Handle desk and last_desk in remove_desktop
Fix focus_node regression
New message: `biggest`
New options for swap: `--{keep,swap}-focus`