asynctypes-685526: Add requisition.clear()

requisition.clear() is the same as requisition.update('') except that is
is sure to execute synchronously.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
asynctypes-685526: Deprecate exec with string

We can't do exec with a typed string synchronously but this exposed
functionality can work in some cases, so we are deprecating it and will
remove it in the future.

The majority of the changes in this commit are to rename the input
object to 'options' to prioritise its new favoured use, and to update
the documentation.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
asynctypes-685526: Add requisition.updateExec()

It's common to want to execute a given command in a single shot. Since
we are deprecating the typed options to exec, we need an alternative,
and this is it.

Unlike exec, which returns an options object. updateExec returns the
promise of an options object.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
asynctypes-685526: Use skipArgUpdate not argUpdate

We've not changed any logic here, just renamed the argUpdate to
skipArgUpdate so the default is the sensible thing.

Also raised bug 830184 and bug 830185 to handle parts of async handling
that we don't want to handle right now.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
asynctypes-685526: Add key press response time logging

Some simple debug to help us monitor if we're making things slow. It
turns out that the performance regressions that I've seen recently are
due to a slowdown in Chrome's JS engine.

                  key press times
          total      ave     max
Safari*   2.788s    2.81ms   25ms
Opera*    3.097s    2.64ms   20ms
Firefox   3.783s    5.00ms   28ms
Chrome   17.409s   26.06ms  137ms

* Completed with errors, so test may not be 100% valid

Signed-off-by: Joe Walker <jwalker@mozilla.com>