Rewrite methods signatures.
map: if rejected, forward promise state and reason.
chain: if promise a or b rejected, forward first reason.
mapError & chainError: map and chain over reason parameter.
mapError & chainError: tests.