Allow adding/removing desktops by index.

(Bugzilla #5974)

Add valid key "first" to add/remove desktops. Add functionality to
add/remove desktops of specific index. For consistency with configuration
of MoveDesktop, configuration indices in rc.xml are 1-indexed.

If AddDesktop with index higher than num_desktops, empty desktops are
appended until that index. If AddDesktop with index between 1 and
num_desktops-1, empty desktop is inserted between previous desktop
index-1 and desktop index.

If RemoveDesktop with index higher than num_desktops, nothing happens. If
RemoveDesktop with index between 1 and num_desktops-1, that desktop is
merged up, keeping current windows focused. If RemoveDesktop with index
num_desktops, last desktop is merged down, keeping current windows
focused.

Preserve previous behaviour of keyword "current" - i.e. when the new
desktop is added in place of the current index, you should be looking at
the new desktop.