Clone input nodes when inserting over a set

I noticed this bug while *wrapping* up gh-558 (c'mon that's funny). I think the changeset ended up being a little ugly, so please don't hesitate to offer suggestions for refactoring!

Commit message:

> This patch increases parity with jQuery, specifically in cases where
> manipulation methods are called with existing nodes on sets containing
> more than one element. In such cases, the provided node should be cloned
> prior to insertion (excepting the final element in the set, where the
> original node should be inserted).
We could, but I'm not sure that would be an improvement since it duplicates information. The preceeding conditions already checked for the character values, after all.

If you're motivated by optimization, I wouldn't necessarily object ([this is used on pretty hot code path, after all](https://github.com/cheeriojs/cheerio/blob/6ba5338829c1ca05fdef7d52e20107fc817233a5/lib/cheerio.js#L59)). In that case, though, we'll have to microbenchmark and consider a bunch of other alternatives (`str.length > 2` comes to mind, along with comparing the relative speed of `charAt` and the array subscripting operator).