moved action validation into context package; context tests not yet fixed
tests WIP
Runner now uses an interface, not a *HookContext; Flush is ~properly tested locally; Run* is ~properly tested by using the Context interface
consolidated yuckiness in HookContext.ActionData method
Modified PowerShell Charm resources dir.
merge parent; address review; add SetProcess testing for runner
better var/field names
merge parent, resolve conflicts
merge imminent future parent, fix conflicts
Meter status support in metrics collector wire format.
Ignore conflict error when releasing maas nodes
Remove obsolete comment
beef up tests
merge parent
Merge branch 'uniter-context-export-flush' into uniter-action-context-2
finally fix crazy tests in not-very-happy-making way
Merge pull request #1084 from fwereade/uniter-context-export-flush

Uniter context: export FlushContext

Most of the tests for finalizeContext, which is *complex* (not to mention complicated...) were invoking it by side-effect. So, it was really not well tested at all; to rectify this:

* context.Runner now uses a context.Context interface, not an explicit *HookContext
  * the finalizeContext method became FlushContext
  * the hookVars func became a HookVars method
  * the context ActionData method replaces an ad-hoc combination of similarly horrible access methods
* the various flush tests that depended on running a fake hook are now calling FlushContext directly; and slightly more than before, although (tbh) not *enough* by a long shot
* context.Runner.Run* methods are now tested using a mock context.Context, so we now have *actual tests* that the contexts get flushed
  * makeCharm/hookSpec now creates scripts in arbitrary dirs, so we can actually *test running an action* /grrmbl
Move types out to a third part to break the dependency cycle
state: more type shuffling
Tweaked upgrade target selection

upgrades.PerformUpgrade() now takes all the upgrade targets for the
machine being upgraded instead of being called once per upgrade
target. This removes the possibility of upgrade steps being run twice,
simplifies the upgrade-steps worker and also ensures upgrade steps are
run in a more readily understood order.