Sketchy support for handling .py files as dynamic content.

Files must provide a function "main" that takes two parameters,
request and response. The response can be set in several ways:

* Direct writing to the output stream via response.writer,
  either to the socket with respons.writer.write or with the
  write_* methods that allow different parts of a HTTP response to
  be written.

* Setting properties on the response object e.g. response.status,
  response.headers or response.content. These take the forms described
  below.

* Returning one to three values from the main function:
  [status], [headers], content. Status is a numeric status code
  or a tuple (code, message). Headers is a list of tuples of headers
  e.g. [("content-type", "text/plain")]. Content is a string or
  iterable containg the response body.

If the stream is written to directly, it will not be further modified
by the return values or properties of the response object.

TODO:

* Make some server utilities avaliable in test files
* Cache test files
* Set a default content type where none is specified
* Allow incremental responses without using the full writer
  API?