Build and publish Windows Python releases. (#14575)

Fixes https://github.com/openxla/iree/issues/13484 (hopefully,
#test-in-prod)

* New setup script `build_tools/python_deploy/install_windows_deps.ps1`
can be used to install Python versions. GitHub Actions could use
https://github.com/actions/setup-python, but I wanted to match what we
have for macOS (`install_macos_deps.sh`). I tried writing this script in
bash, but couldn't run the Python installer with `/quiet` for some
reason, so it's written in powershell instead. Tested locally and on CI
but could be brittle on other systems since Windows is Windows.
* New build script `build_tools/python_deploy/build_windows_packages.sh`
is forked from matching Linux and macOS scripts. Also tested this
locally and on CI.

These scripts can build for multiple Python versions, but I'm starting
with just 3.11, which might be enough.

Tested at
https://github.com/openxla/iree/actions/runs/5765425296/job/15631341317,
and I sanity checked that I could install and use locally built wheels.
diff --git a/compiler/setup.py b/compiler/setup.py
index 5a7f41e..eab5112 100644
--- a/compiler/setup.py
+++ b/compiler/setup.py
@@ -75,8 +75,10 @@
 # We must do the intermediate installation to a fixed location that agrees
 # between what we pass to setup() and cmake. So hard-code it here.
 # Note that setup() needs a relative path (to the setup.py file).
+# We keep the path short ('i' instead of 'install') for platforms like Windows
+# that have file length limits.
 SETUPPY_DIR = os.path.realpath(os.path.dirname(__file__))
-CMAKE_INSTALL_DIR_REL = os.path.join("build", "cmake_install")
+CMAKE_INSTALL_DIR_REL = os.path.join("build", "i")
 CMAKE_INSTALL_DIR_ABS = os.path.join(SETUPPY_DIR, CMAKE_INSTALL_DIR_REL)
 
 IS_CONFIGURED = CONFIGURED_SOURCE_DIR[0] != "@"
@@ -96,7 +98,7 @@
         # Note that setuptools always builds into a "build" directory that
         # is a sibling of setup.py, so we just colonize a sub-directory of that
         # by default.
-        IREE_BINARY_DIR = os.path.join(SETUPPY_DIR, "build", "cmake_build")
+        IREE_BINARY_DIR = os.path.join(SETUPPY_DIR, "build", "b")
     print(
         f"Running setup.py from source tree: "
         f"SOURCE_DIR = {IREE_SOURCE_DIR} "