Add Flux architecture

With firebase the flux cycle goes like this:

firebase events -> actions -> dispatcher -> store -> views -> firebase

child_added events call the NoteAction.add(snapshot) method which
dispatches a payload with the firebase snapshot. the store intercepts
this payload and creates a note object from snapshot and stores it in
its internal data structures, then emits a change event. the index view
listens to the change event and updates its state from the store.
view actions pushes events to firebase, and thus the cycle closes.

child_removed and child_updated behaves somewhat similarly