perf-817543: Calculate Parameter.defaultValue lazily

In the case of settings, doing eager evaluation of defaultValue was
causing performance problems for the Mozilla embed because looking
through preferences was fairly slow, and it was happening in just the
wrong place.
perf-817543: Only read system prefs when needed

We can now use gcli-only settings without needing to load system prefs.
This allows us to do things like check if we need to use the intro
command without and pref related slowdown.
Merge branch 'master' into perf-817543
Merge branch 'perf-817543' into asynctypes-685526

Conflicts:
	lib/gcli/canon.js
asynctypes-685526: Correctly propagate promise

The keyUp handler returns a promise (mostly to help testing) but for
some cases we were returning a resolved promise rather than the promise
from a call to update()

Signed-off-by: Joe Walker <jwalker@mozilla.com>
asynctypes-685526: Mock commands should return strings

They did return lumps of data, originally with some marginal testing
value, but we don't have converters yet, and having something that can
be displayed is now more useful to testing.
The low number of tests that need updating as a result of this change
(i.e. 1) is a testament to how not-useful the lump of data was.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
asynctypes-685526: Various tidy-ups

Better error messages, removed blank lines, explicitly setting a
variable to undefined to shut the linter up.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
asynctypes-685526: bind 'this' properly

Bug fix for inputter which was failing to bind a function that clearly
needed binding.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
asynctypes-685526: Propagate promise from helpers._check

The unit test function (helpers._check) used promises but didn't pass
the promise on to dependant functions. Now it does.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
asynctypes-685526: Add 'exec' to test suite

Previously all testing had to be done by a separate exec function which
made synchronisation hard. This change allows for an exec property to
audit, and handles the promises correctly.

We expect to remove helpers.exec as soon as we have converted the tests
to use helpers.audit in it's place.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
asynctypes-685526: Update outstanding work

Note the calls to update() that are not properly synchronised yet.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
asynctypes-685526: Update testExec to use new test helper

This roughly replicates part of the old test functions but does so in
an async friendly way.

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