edksetup.sh: Look for BuildEnv under EDK_TOOLS_PATH

EDK_TOOLS_PATH is basically a replacement for $WORKSPACE/BaseTools.

It makes sense to check for BuildEnv there, then, if $WORKSPACE
is absent but $EDK_TOOLS_PATH is present.

With this patch, it is possible to separately package tools in
/usr and use them compile EDK2 (doing "rm -rf BaseTools" in the
EDK2 tree).  This is desirable for OS distributions that need to
distribute the tools in a "free software" repository and OVMF in
a "non-free software" repository; bundling the same code in two
different packages causes confusion.  It is also simpler for distros
because the build process for BaseTools and OVMF is completely
different.

Contributed-under: TianoCore Contribution Agreement 1.0
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
edksetup.sh: Ensure that WORKSPACE points to the top of an edk2 checkout

Since WORKSPACE should point at the EDK2 tree, the right place
to check its validity is edksetup.sh, not BaseTools/BuildEnv.

This patch makes sure that BuildEnv is always invoked with a valid
WORKSPACE.  This lets us show better error messages, and ensures that
we never dirty the user's environment.

BuildEnv will maintain backwards-compatibility and, should the variable
be missing, it will be able to set a default WORKSPACE.  Only the sanity
checks will be of lower quality.

Note that the error message in SetupEnv will never be shown if
SetWorkspace sets WORKSPACE=`pwd`.

Suggested-by: Laszlo Ersek <lersek@redhat.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>