title: onDataChange() retrieves the local snap instead of the realtime value
body: <p>When I start listening for the <code>onDataChange()</code> event the handler receives a value. This value is the one previously saved locally. Then it immediately calls the handler a second time and retrieves the correct updated value on the cloud.</p>
  
  <p>The documentation says:</p>
  
  <blockquote>
    <p>You can use the function to read a static snapshot of the contents at a given path, as they existed at the time of the event. This method is triggered once when the listener is attached and again every time the data, including children, changes.</p>
  </blockquote>
  
  <p>I read "as they existed at the time of the event",
  not as it existed LOCALLY at the time of the event.</p>
  
  <p>I expect the method to trigger once when is added retrieving the real-time value and not the one saved locally, and then to trigger every time the value is changed.</p>
  
  <p>How to reproduce:</p>
  
  <ol>
  <li><p>Load an existing object via:</p>
  
  <pre><code>onDataChange(DataSnapshot dataSnapshot)... // value = "Hello world"
  </code></pre></li>
  <li><p>Kill the App and change the value via Firebase console to "Hello again World";</p></li>
  <li><p>Load again the object via:</p>
  
  <pre><code>onDataChange(DataSnapshot dataSnapshot)... // value = "Hello world"
  </code></pre></li>
  <li><p>Wait and the handler will be called again immediately after with the value: "Hello again World"</p></li>
  </ol>
  
  <p>I don't know if this is a bug or if it's by design.</p>
  
  <p>In case this is the default behavior and is by design, is there a way for me to know if the value is the last saved local value?</p>