title: Observable.Zip when number of sequences to zip is unknown until runtime
body: <p>I need to model an approval process. Before it was pretty simple. Two roles had to approve something, and then we could go on to the next step:</p>
  
  <pre><code>public class Approved
  {
      public string ApproverRole;
  }
  
  var approvals = Subscribe&lt;Approved&gt;();
  
  var vpOfFinance = approvals.Where(e =&gt; e.ApproverRole == "Finance VP");
  var vpOfSales = approvals.Where(e =&gt; e.ApproverRole == "Sales VP");
  
  var approvedByAll = vpOfFinance.Zip(vpOfSales, Tuple.Create);
  
  approvedByAll.Subscribe(_ =&gt; SomeInterestingBusinessProcess());
  </code></pre>
  
  <p>But now there is a new requirement: the number of roles required to approve something can vary:</p>
  
  <pre><code>public class ApprovalRequested
  {
      public string[] Roles;
  }
  var approvalRequest = Subscribe&lt;ApprovalRequested&gt;().Take(1);
  var approvals = Subscribe&lt;Approved&gt;();
  
  var approvedByAll = ???;
  
  approvedByAll.Subscribe(_ =&gt; SomeInterestingBusinessProcess());
  </code></pre>
  
  <p>I feel like I am missing something pretty obvious here... can anyone point me in the right direction?</p>
  
  <p><strong>Edit</strong></p>
  
  <p>To clarify: The approval process is on a per item basis. The order that the approvals can arrive in is undefined. We don't care if one role approves an item multiple times.</p>