There is no way around this. The directory where CMake is invoked is
where it writes its build files, so we have to `pushd`. In case anything
fails, we `popd` in a finally block.
- Better comments
- Better indentation
- Working directory agnostic (uses `$PSScriptRoot`)
- Does not `cd`
- `PSPackage` does not call `PSBuild`
- Asserts that `bin/powershell` exists
- Derives version from `git describe` if not given
- Version parameter now a string to support metadata