Change executor detection algorithm.

The dispatch*() or post*() functions come in two overloads: one that takes an
explicit executor and one that does not. When you use the overload of the form:

    dispatch(t0, t1, ..., tN);

it behaves as though you had called:

    dispatch(ex, t0, t1, ..., tN);

where the executor ex is determined as follows:

- The completion tokens t0 to tN are converted into the function objects f0 to
  fN, by applying the handler_type<> trait to each completion token.

- The ADL function make_executor() is applied to each function object f0 to fN
  in order, until the first call that has a return value that is *not* of the
  unspecified_executor type. The result of this make_executor() call is used as
  the executor ex.

- If all calls to make_executor() return an unspecified_executor, then an
  unspecified_executor is used as the executor ex.