[addonversion] adds empty() member to AddonVersion to save some unneeded string compares
[addondb] Search() and GetAddons() could return add-ons other than that with highest version
[addondb] move GetAddon(int) version to protected as it's not part of the external API
[addondb] use a single cartesian join query rather than multiple queries when retrieving info on an addon
[addondb] use ExecuteQuery() and GetSingleValue() for BreakAddon/IsAddonBroken
[addons] allow passing a database object into CheckDependencies. Saves many Open/Close cycles, vastly speeding up dependency checking and thus repository updates
[database] add Begin/CommitMultipleExecute() to queue up multiple ExecuteQuery() database operations, and commit them within a transaction - much faster for multiple inserts.
[addons] commit the broken status to the database within a Begin/CommitMultipleExecute() block for speed
[addondb] adds CAddonDatabase::GetAddonVersion() to speed up repository parsing
[addons] group the texture invalidation under a Begin/CommitMultipleExecute to speed up repository updates
Merge pull request #4098 from jmarshallnz/repo_update_timing2

Repo update timing version 2