Complete description of Python web server in terms of extensibility.

Rewrote much of the code and the second half of the chapter in order to focus on extensibility.
I like this distinction, and how you discuss it. Maybe I'm not grokking the code fully, but I'm a little confused when you use ServerException elsewhere to pass around file-not-found conditions (in 02-serve-static/server.py, for example).