Bursary balance refresh fix
===========================

Issue fixed
-----------
A payment made against an EXISTING bill from the embedded Bill Details screen refreshed that
bill's payment history, but it did not invalidate the shared Bursary account data. Because the
Bursary Overview and Admin dashboard totals are calculated from the shared account rows, the UI
could continue showing the old Balance / Recorded due / Total outstanding until a manual refresh.

Fix
---
1. Every successful bursary financial mutation now broadcasts a local financial-change event.
2. useBursaryData listens for that event and reloads accounts from fees.php with cache disabled.
3. The existing projected/default-term balance rule is unchanged: a configured term fee is shown
   only when there is no normal fee record. Once a bill exists, its live backend balance is used.
4. Therefore a full payment that leaves the bill balance at 0 now causes the Accounts Balance,
   Bursary Overview Recorded due / Total outstanding and any mounted Admin dashboard bursary totals
   to refresh automatically without requiring the user to press Refresh.

Backend
-------
No backend change was required for this issue. The existing backend already updates fees.amount_paid
and exposes the recalculated balance through the session fee reader.
