Use UUIDs for Agent IDs, improve binding procedure

This PR:

1. Uses a random UUID as the agent ID to avoid issues with hostnames
2. Skips asking the user to select an entity if there is exactly one entity that seems like a match, and it has a URI
3. Allows the agent to be re-associated with a different entity using a new agent ID

This needs more manual testing (I wrote it without internet access, which makes --setup tough to test), I'll work on that when I get a chance.