Lazy load http_head stuff in distribution

This solves the problem of having to make a http HEAD request every time we access a distribution. We only do this now if we want to check the distribution actually exists, or the headers match the claimed content type.