Use a (mostly) hermetic Python interpreter

It still requires python to be installed on the host to run the wrapper
scripts, but it's close to being fully hermetic.

This also requires/enables the following changes, unfortunately all at
the same time:
 * Use a downloaded f2py
 * Use a downloaded scipy/numpy/matplotlib
 * Fix a few things that don't run with the python version in their #!
 * Stop using bazel-generated __init__.py files, because those interfere
   with importing matplotlib nicely

Change-Id: Ife280464613d67cece9587b7d947f0b1d5466d7e
diff --git a/debian/download_packages.py b/debian/download_packages.py
index ca36b4b..5ad46e1 100755
--- a/debian/download_packages.py
+++ b/debian/download_packages.py
@@ -19,13 +19,25 @@
     deps.update(get_deps(package))
   return deps
 
+def map_virtual_packages(packages):
+  '''Maps known virtual packages to the preferred concrete packages which
+  provide them.'''
+  for package in packages:
+    if package == b'python-numpy-abi9':
+      yield b'python-numpy'
+      continue
+    if package == b'python3-numpy-abi9':
+      yield b'python3-numpy'
+      continue
+    yield package
+
 def download_deps(packages, excludes, force_includes):
   deps = get_all_deps(packages)
   exclude_deps = get_all_deps(excludes)
   deps -= exclude_deps
   force_include_deps = get_all_deps(force_includes)
   deps |= force_include_deps
-  subprocess.check_call([b"apt-get", b"download"] + list(deps))
+  subprocess.check_call([b"apt-get", b"download"] + list(map_virtual_packages(deps)))
 
 def fixup_files():
   # Gotta remove those pesky epoch numbers in the file names. Bazel doesn't