Proper logging and implement the --strict option

This branch centralizes logging and removes several ad-hoc things.

Also, it implements the real ``--strict`` option, which turns all the warnings into errors, if you want to be
really really sure your site is building correctly.

It needs reviewing because it's large and touches a ton of stuff, so it has been done ... ahem, mechanically.