files: Add some more utility functions and test.
models: Unify FP and URL creation for images.

Bam!
templates: Switch over to the new URLs for static files.
forms: Permit non-PNG images for portraits.

There was a reason for this but I don't remember it.