Add support for auto downloading of libraries on install

Will install from a selected mirror from forge's mirror list. Rewrote abit of the download api whilst i was doing this to allow for easier addition of new download types
Cleanup data file

- versions are all specified together
- mirror data url is now loaded from data file
- error out before crashing if out of date