Adds detection and version tracking for URLs like:
- releases/download/{tag}/{asset}
- releases/tag/{tag}
This enables monorepo workflows where multiple mods share a repository
but use immutable tags (e.g., mod-name__latest) instead of the automatic
releases/latest endpoint.
Uses asset creation timestamps to generate sequential versions in
YYYYMMDD_HHMMSS format, ensuring each mod gets independent version
tracking rather than sharing the repository's latest release version.
Maintains full backward compatibility with existing URL patterns.
- Check if download url links to latest head, and if so, use version of latest commit hash instead of release version
- Merge `get_latest_release` and `get_latest_commit` into `get_version_string` for less duplicate code
- Check and print GitHub API rate limit details including api resource, remaining calls, and reset time
- On exceeding rate limit or 403 error, check if primary or secondary rate limit has been reached
- On primary rate limit breach, wait until hourly rate reset time
- On secondary rate limit breach, wait for `retry-after` response time or an exponential time, starting at 60 seconds and doubling for each attempt, following GitHub API docs
- Prevent program waiting for more than 30 minutes for API rate reset time