Segregate in-memory and persisted remotes

It seems desirable to avoid having dangling remotes, or even to be able to convert between in-memory remotes and persisted-in-config remotes. To that end, this PR updates the clone API to remove the dangling-remote parameter, and introduces a way of passing in everything you can do with a dangling remote instead.