Allow installing older version of extension if latest not compatible

* Change ExtensionManager.getCompatibilityInfo() so it finds the newest compatible version, rather than only looking at the very newest version and giving up after that.  Returned info now indicates which version was returned and whether it was the very newest or not.
* ExtensionManagerView enables the install button if any available version is compatible, but shows warning message if it's not the very newest version.
* Also fixes bug #5640 by cleaning up how the Update button enablement is determined.  (This still follows the _intent_ of master, where the button is disabled any time the very latest version isn't compatible.  In the future, you could imagine following the new Install precedent more -- enabling the button with warning note if there's _any_ compatible newer version to update to, even if we can't update to the very latest. But this doesn't do that yet.)

Now with unit tests too!