Add 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".

This solves issue 2143.
Updated documentation for new powershell support.
wip