title: Random permutation iterator
body: <p>Need to augment Enumerable module with new iterator, that returns elements of collection in random order. The only information about collection - it responds to each. No other assumptions about elements.
  I have a solution - to wrap elements into Array and then use sample method:</p>
  
  <pre><code>def each_permuted
      tmp = []
      self.each do |w|
          tmp &lt;&lt; w
      end
      tmp.sample(tmp.length).each do |w|
          yield w
      end
  end
  </code></pre>
  
  <p>Don't like it, because here we go through collection twice(even three times counting tmp.sample random permutation). 
  Is it possible with single go through?</p>