v_unused_reg() doesn't allocate a backend value

This also includes register freeing-up changes
Resolve to the correct type for x86_64 impl_load()
Add newlines in virt.c:TODO()