Store/load persisted environments for applications

* Environment is loaded from the Server instance and used for prepare
  and run.
* Attach environment to commit object, since it can change with each
  commit.
* Add /env to test app
pmctl: Add env-set to configure app env vars

Restart goes through the existing replace mechanism which has been
updated to test for changes in environment. If the environment
variables of the replacement do not match the environment variables
of the current commit, then a hard restart is done instead of a soft
restart or replacement.
pmctl: Add env-get to get configured app env vars

Reads the environment variables stored in the strong-pm server. If
given, the pmctl client filters the list by name.
pmctl: Add env-unset to remove configured env vars

Internally add null as a special value for environment variables that
indicates deletion.

Expose this convention on the CLI as `sl-pmctl env-unset KEYS...`