Improve compliance with BlitzLoop's data format

This improves input validation, handling of UltraStar metacharacters, and fixes a bug with video_offset being set incorrectly.