Factor out obfuscated-passwords function
Add :apt to debconf script implementations
Fix looseness in node-spec contracts
Guard PPA addition with apt list file check

Before installing a PPA, ensure it's .list file doesn't exist in
/etc/apt/sources.list.d.
Factor VersionMap into p.core.version-dispatch

Generalise the version map lookup and move to pallet.core.version-dispatch.
Make packager lookup map based

This makes the lookup of packager based on os-family and os-version extensible.
Improve p.c.user namespace docstring
Split out execute-on-unflagged

Adds execute-on-filtered, execute-and-flag and makes execute-on-unflagged not
set the flag on completion.

Allow actions to be run on unflagged nodes without the setting of the flag.
Ensure admin-user is set and reported correctly

The admin user should always be in the environment.
packager reports based on detected os if needed

When the packager is not returned by the node, and the node does not report an
os-family and os-version, the use the detected os to determine the packager.
Add :os-detect option to lift and converge

This option can be used to control the detection of os-family and os-version on
each node.  By default, os detection is enabled.
Fix argument order in lift-nodes
Don't set default ssh keys if password given

In pallet.api/make-user, do not specify the default key paths when a password is
passed.
Fall back on detected OS in with-script-for-node

When the node doesn't report os details, take the information from the detected
os details.
Fix os detection to filter unknown values
Log environment user in p.core.api
Log has-state-flag values at trace
Adjust trace level logging
Default phase-execution-f using a var

This reduces the need to recompile on changes in the default implementation.
Add logging of ssh authentication details