Add a custom 404 page

* needs controller because there's some dynamic logic

For dreamwidth/dw-free#1058.