don't cause relationships to be materialized accidentally when starting to listen to firebase
don't deserialize on assignment
Coalesce multiple firebase events into the same run-loop

Previously we were triggering the run-loop for each event received.
As there are potentially lots of events fired in quick succession this is sloooow and you could watch changes appear over time.

Instead, we queue up all the received actions & run them together in the next run-loop.