Make Map/Set subclassable; support `iterable` argument to constructor.

Use the same technique added for `Promise` to kludge in support for
ES6-style construction and subclassing, factoring out some helper
methods in the process.  Add support for the `iterable` argument to
Map and Set.
Merge pull request #218 from cscott/subclassable-map

Make Map/Set subclassable; support `iterable` argument to constructor.
Update CHANGELOG.
Make sure Object.keys does not throw.

Per https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys - Object.keys should now accept non-objects, and coerce them to objects.
Make sure null and undefined throw
Merge pull request #220 from ljharb/object_keys_no_throw

Make sure Object.keys does not throw.
Update CHANGELOG to include PR #220.
Update README.

Audit list of shimmed functions against source.

Add a note suggesting the use of `unorm` to shim `String.prototype.normalize`.

Update copyright year.
Describe how to use subclassing functionality of Map/Set/Promise.

Also updated all our test cases to be consistent with the recommended
pattern. No change in functionality; we're just using appropriate ES6
methods (`Object.setPrototypeOf`) and making the `constructor` field
non-enumerable.
Merge pull request #221 from cscott/update-readme

Update README.