Allow empty sprites to be allocated.
Introduce proper support for non-shp sprites in cursors and ShpImageWidget.
Use the normal extension checking rules for .r8.
Rewrite ShpTSReader. Closes #3746.
Define a consistent interface for sprite loading. Fixes #4176.
Make terrain tiles ISpriteSources.
Change Utility --png to accept all ISpriteSources.
Update Utility --shp to match.
Fix D2 shp parsing and make it a proper frame source.
Clean up ShpReader code.
Clean up ShpTSReader code.
Load terrain from any SpriteSource.
Update CHANGELOG.
Fix UI rendering of offset sprites.
Remove --userdir argument from Utility --extract.
Fix mod chooser list
Overhaul asset browser.