Refactor the working-set synchronization algorithm so that it won't cause random crashes with split-views
- The problem was that views could be leaked during the update if there
were multiple views for the same document in a working-set attached to
multiple areas. The new algorithm is much easier and safer,
because it _rebuilds_ the structure instead of updating it,
and then it safely deletes all views which were not recycled
during the rebuild.
- Also simplified Area::closeView so that it doesn't need to delete
the document, but only cares about asking for user-feedback. This
fixes a bug where the whole document-area stopped being repainted
until a restart of KDevelop.