Rework ResourceDownloader so that it no longer works directly with JSON.

This will also allow external sources (i.e. Forge) to add their own resources.

Optimize imports was also ran so diff is a bit larger than it should be