add spire-based capabilities to Buffer
use faster looping construct
added shrinking support to Buffer
More improvements.

This commit has a few different things:

 * Adds some documentation and Iterable support to Set.
 * Optimizes operations involving two sets.
 * Improves the Set benchmarks.
 * Add some missing methods and docs to Buffer.
 * Move shared exceptions into Util.scala
 * Other assorted fixes.