change ready/cancelled state tracking and add RMXFirebaseModel#once_ready_or_cancelled