Constructs a new Set with an optional set of `initialKeys`.

It is important to note that keys are coerced to String for most purposes
with this object, similar to the behavior of JavaScript's Object. For
example, the following will add only one key:

var s = new Set();
s.add(1);
s.add("1");

However, the type of the key is preserved internally so that `keys` returns
the original key set uncoerced. For the above example, `keys` would return
`[1]`.
function Set(initialKeys) {
  this._size = 0;
  this._keys = {};

  if (initialKeys) {
    for (var i = 0, il = initialKeys.length; i < il; ++i) {
      this.add(initialKeys[i]);
    }
  }
}