Better matching the ES6 spec

This change:

* Throws on incorrect parameters for the Promise constructor
* Removes the internal cyclic reference between the promise and resolver objects
* Cleans up some tests
* Removes logging which wasn't helping very much