Abstract charm relations into a separate thread

juju doesn't provide a way to pre-emptively set services that will be
related whether the related charm exists or not. This creates a thread
that just goes through a list of charms to be related and will run
until those relations complete.

Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
I don't think this code will ever throw an exception, but if it does, it'll just get swallowed up here and not be useful to the charm queue class.

What we should do instead is have client.add_relation return success or failure (because the juju CLI does actually exit(1) when the relation can't be made because of missing service). Then we could have set_relations return success or failure, and the charm queue could use that.