title: intersect function returns different mode depending on input order
body: <p>Probably the real question is "Should anyone care", but here's the inconsistency:</p>
  
  <pre><code>intersect(c(),1:3)
  integer(0)
  intersect(1:3,c())
  NULL
  </code></pre>
  
  <p>The same thing happens with <code>setdiff</code>, but there it makes sense because <code>setdiff</code> is designed to be asymmetric with respect to its two inputs.
  Now, it's more or less obvious from the source for <code>intersect</code> why this happens, as the algorithm is asymmetric even though the intersection of two sets is symmetric.  </p>
  
  <p>The question, I guess, is whether this could ever lead to code mangles when some parent function depends on the mode of the output.</p>
  
  <p>(Background: I got some requests from a user to fix the current rev. of <code>package:vecsets</code> to properly handle empty set inputs, and I'd like to make the output match the class, mode, etc. of the base functions as closely as possible).    </p>