Support code for Windows Powershell support.

Powershell is implemented for all promise types/functions where
useshell is supported, which are:
  - execresult()
  - returnszero()
  - "commands" promise type

For the two functions, one can now specify "powershell" instead of
"noshell" or "useshell". The "commands" promise type previously
supported only boolean values. These are retained for backwards
compatibility, but the new, preferred keywords are "noshell",
"useshell" and "powershell".

Also removed the need for shell commands to start with a word that is
an absolute filename. Anything you'd want to use a shell for will
defeat this security measure anyway (pipe, chained command), and it
doesn't go well together with shell builtins on either platform (Unix
or Win).

Absolute filenames are still enforced for the "noshell" type.

This solves issue 2143.
Updated documentation for new powershell support.
Added powershell hard class on Windows.

Part of issue 2143, to make Powershell more convenient to use in a
potentially heterogenous environment.
Merge branch 'master' of git://github.com/cfengine/core into winPowershell

Conflicts:
	cf-agent/verify_exec.c
	libpromises/evalfunction.c
	libpromises/exec_tools.c
	libpromises/unix.c