Support a real 404 page.

I didn't merge this directly because the 404 page seems a little rough around the edges, and I thought @jina might want to take a look at it before this got merged.