In the case where the primary screen is the one that
will be removed, the salvage function will not successfully
salvage the shared tag, resulting in being unable to retrieve
it in new screens.
Introduce additional fallback logic to find a suitable screen
to move to when salvaging.
Configuration when moving clients to other tags was not correct,
causing them to only be movable to tags on the same screen, and
based on the tag index on that screen.
When disconnecting a screen, it would previously leave the tags on the
old screen, throwing errors when trying to move them to an existing
screen. This change makes sure that the tags are moved over to an
existing screen when the screen is removed. It doesn't make sense to
allow tags without screens, since all clients (programs) that were on
the old tags will be moved to another tag on an existing screen anyway.
awful.screen.connect_for_each_screen(func) can be used to restore tags
to a screen when it is connected again. Closes#2.