title: Combine observables in the order of availability of its elements
body: <p>I'm trying to build an operator like <code>s.startWith(x)</code>, but conditional one - let's call it <code>s.startWithIfNothingAvailable(x)</code>. I want it to prefix stream with an <code>x</code> only if <code>s</code> <em>has no elements available</em> at the moment of subscription.</p>
  
  <p>Let me illustrate the idea with an example. </p>
  
  <p><code>s</code> is a stream of reports from server. </p>
  
  <ul>
  <li>If there is no report arrived yet, I want to prefix <code>s</code> with an empty one - just to update ui with something. </li>
  <li>If <code>s</code> contains something(perhaps some reports were cached) prefixing <code>s</code> will result in rendering empty report and then non empty one. I would like to avoid such blinking.</li>
  </ul>
  
  <p>I think the other way of solving that is to use something like <code>.concat</code> but which order observables by availability of its elements. </p>
  
  <p><code>Observable.concatFirstAvailable(serverReport, emptyReport)</code>, if <code>serverReport</code> has no elements yet - switch to <code>emptyReport</code> and than get back to waiting on <code>serverReport</code>.</p>