Make Instance.refresh() extra careful about recursive loads

This simply makes sure that the instance copy that we fetch to
refresh an instance can not trigger lazy loads itself due to
a bug in get_by_uuid() or below. This hasn't actually been the
cause of any recent bugs, but this makes it much more careful.

It also makes sure that obj_load_attr() refuses to do its work
if self._context is None, which was previously only being
enforced for remoted calls.

Change-Id: I76f433af34620045b079e0a2c30c60b28a4ce525
Remove `utils.last_octet`

Not used since 142f6f6d3e7ce63e0a34cf68c8473d047766e093 (over 3 years ago!)

Change-Id: I2a98c38682aabd8ef8cad8151075f8ea64dbead8
Merge "Make Instance.refresh() extra careful about recursive loads"
Merge "Remove `utils.last_octet`"