Minor refactoring of `deferred:exec-task'.

- bind `next-deferred' in the outer let form

- bind `value' in a let form instead of using `setq'
Define `deferred:resignal' and use in `deferred:exec-task' & `deferred:watch'.

- `deferred:resignal' refines the error-raising logic that was in
  `deferred:default-errorback':

  - Emacs conditions represented as conses are re-signaled unchanged

  - strings are raised unchanged using (error ..)

  - anything else is formatted into a string and raised using (error ...)

  It seems better to have a descriptive name for this function since
  it may be needed in several places.

- `deferred:default-errorback' just calls `deferred:resignal'

- `deferred:exec-task' uses `deferred:resignal' on an unhandled error
  at the end of a chain

- `deferred:watch' also uses `deferred:resignal' to re-raise errors in
  its error callback
Simplify `deferred:condition-case'.

If I understand correctly, the `unwind-protect + let' can be replaced
by a single `let' and have a smaller macro expansion.