CobbleGacha Expanded Alpha 3.7.40

Standard Banner STOP/DELETE follow-through fix

Root causes still present in 3.7.39:
1. BannerDirectHooks.acceptServerPoolData() recreated a synthetic Standard Banner on
   the CLIENT whenever server sync did not contain banner index 0, and forcibly
   inserted index 0 into the visible banner order. This made a stopped/deleted
   Standard Banner continue to appear in the main gacha UI.
2. BannerEditorHooks.ViewBanner treated permanent=true as always active/LIVE even
   when the server had persisted banner.standard.enabled=false.
3. BannerTestRuntime.byIndex() returned inactive banners and fell back to the first
   configured banner/default Standard. A stale selected index could therefore still
   resolve to Standard for pull/reward logic.

3.7.40 changes:
- Removes the synthetic client Standard Banner creation entirely.
- Removes forced index-0 insertion into the client visible order.
- Permanent banner LIVE state now follows server-provided remaining state.
- BannerTestRuntime.remainingMs(permanent) returns Long.MAX_VALUE only while enabled;
  disabled permanent banners return 0.
- BannerTestRuntime.byIndex() only returns ACTIVE banners. If the requested index is
  stale/inactive it selects the first active banner; if none exist it returns null.
- Existing 3.7.39 direct STOP/DELETE persistence remains intact.

Expected behavior:
- STOP Standard: stays in ALL, disappears from ACTIVE/main gacha and no longer reads LIVE.
- START Standard: becomes active again.
- DELETE Standard: removed from config/banner.order and both editor + gacha UI.
- Server restart after DELETE: Standard remains deleted.
- Deleting the entire CobbleGacha config folder intentionally restores packaged defaults,
  including Standard, on a fresh config install.

No pull rates, pity, IVs, 50/50 odds, reward probabilities, animations, or card art changed.
