(bug 52039) Use closures for dynamic defaults.

Some default values depend on other settings that may not
have been initialized at the point when the defaults are defined.

This introduces a mechanism to allow defaults to be defined as
closures, so the calculation of the actual value can be deferred.

Change-Id: I9d22e46d9141252a9663e1bc8df6766f149291c2
Merge "(bug 52039) Use closures for dynamic defaults."