resolve(v): follow if v is a promise, improve executor
resolve(v): follow if v is a promise, improve executor

Despite passing all the tests, the static Promise.resolve() was not
working correctly. However, this was also not tested till now, as the
test suite focus on .then(), and provide its own static resolve() if one
isn't available by the module (it wasn't).

This is a refactor of the code to use a single resolve() function which
(hopefully) performs well now under all cases:
- Previously the static resolve didn't follow a promise and instead
  incorrectly fulfilled with this promise as the value. Now it follows
  it.
- The dynamic resolve did mostly follow a promise, but didn't seal our
  fate, e.g. if resolve was called with a delayed promise and then
  fulfilled with an already resolved promise, the latter settled rather
  than a following the first promise and waiting for it to settle. Now
  this works correctly.

Additionaly, the terminology throughout the comments/functions was
refined, specifically adding the terms "fate" and "settled", which were
incorporated into the fixed resolve().

resolve/reject are now tested - after adding the names which the test
suit expects (resolved/rejected).

The modern constructor now returns a rejected promise if the executor
threw an error (unless its fate was sealed earlier at the executor -
same as in other compliant implementations).

Additionally, many comments were rewritten/refined.

Performance remains as competitive as before, or even faster.

avih/nopromise