First attempt to implement universal chain: combinator.

In theory it should be possible to create a promise chain by
giving chain: a list of blocks of various types. These blocks
have to be of the same type of one of the blocks given to
fulfilled:, failed:, progressed:, then: or rescue:

We still miss new tests to verify the new behavior and proper
documentation.
Add current chain tests, they are incorrect though
merge recent master changes
Finalize new chain: implementation.

- Add new tests and fix incorrect onces.
- Update chain:initial: implementation and update corresponding docs.
- Update documentation for fulfilled:, failed: and progressed:.
- Remove obsolete code.