dispose method
Closes the user stream controller and releases resources.
Called by _DriverLiteState.dispose — the .value BlocProvider does not
call dispose automatically, so the widget owns this lifecycle.
Implementation
void dispose() {
_logger.info('[UserRepository] Disposing');
_userController.close();
}