Use a phase-context for named plan-fns

When a name is given to the plan-fn, create a phase-context for it, rather than
a session-context.  The session-pipeline is renamed to session-context.
Improve service-properties doc string
Ensure a session is set when executing

The thread-local *session* wasn't being set when executing an action-plan.
Add targets and target-nodes to pallet.crate

These functions return all nodes being targeted by the converge or lift.
Add trace level logging to pallet.ssh.execute

The trace level logging gives insight into the timing of action executions.
Refactor etc-hosts crate

The host entries are now maintained in the settings, with functions to add
localhost, ipv6-aliases and a named localhost-hostname (using 127.0.1.1). The
aliases for each ip are now stored in a sequence.

The new add-hosts function allows for bulk update of the hosts mapping.

The hosts-for-group and hosts-for role are removed.  Equivalent functionality
can be achieved using pallet.crate/nodes-with-role and the add-hosts function.