Port the build pipeline and test harness to ES. Fix bug 1030309.

Yet to come: request-time dir listing rendering. Right now, you can't see folder listings, but files are fine.
Except I need a function that, on invocation, raises, not one that returns a function that raises. The type of exception is not determined at the point of the call to `walk()`. So, at best, I'd have to say `onerror=lambda exc: raiser(exc)()`. Kind of roundabout.