We expect that changeish.url is valid on Refs, Branches, Tags, and
Changes but we only serialize and deserialize the url attribute in the
Change class. This meant that when we shifted to relying on the zk
change cache to load these objects back into memory we were getting them
back without their url info.
This is a minor issue when running with a single scheduler because it
only causes problems for enqueing jobs after a restart and we rely on
pulling newly merged changes from the cache. I suspect this would've
caused bigger problems if we were running with multiple schedulers.
To fix this we move the url attribute into the base Ref objects and
serialize/deserialize it there. This shoudl ensure that we can load the
complete data back again after a restart or when we switch to multiple
schedulers.
Change-Id: I10c3657924b6a5f075a439441fde6fe9e582030d