Add an API to ask whether update site information has changed

When following/unfollowing update sites, we want to store that
information even when the user quit the updater without updating the
respective files. To this end, let's be able to tell whether we need to
write db.xml.gz at the end of an updater session.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Retain order of overridden update sites

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Keep record of overridden update sites intact

Even when reading in db.xml.gz files from custom update sites, keep the
record of the overridden versions from shadowed update sites intact,
just in case we have to remove an update site (and unshadow the
overridden versions).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
WIP: Add an API to remove update sites properly

When removing an update site, we really *need* to unshadow shadowed
files... otherwise, surprising things start to happen, such as uploading
incompatible lists of superseded previous versions.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Add a test to verify that plugins are unshadowed upon unfollowing a site

When deactivating an update site, we really want to make sure that the
formerly shadowed metadata becomes active, so that uploading to a formerly
shadowed update site will work (and not lose a ton of information about
previous versions).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Avoid using obsolete FileUtils.matchVersionedFilename

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Avoid using deprecated AppUtils class

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
fixup! Avoid using obsolete FileUtils.matchVersionedFilename