completely move canonical methods into the lib, slight refactor to separate generation of canonical FU and allow building of canonical for any object, allow current hostname to be used as the domain when a full base URL is required