implement __repr__ for WorkerContext and others

I think this is slightly better than what we discussed offline. Firstly, I don't think it's unreasonable for us to expect that service and method names are strings. Secondly, you get much nicer output if you actually use a unicode character. For example with a service name of "föbar":

Using ``!r`` in the format string:

```python
>>> str(dep)
    "<DependencyProvider [u'f\\xf6bar'.'spam'] at ...>"
>>> print dep
    <DependencyProvider [u'f\xf6bar'.'spam'] at ...>
```

Explicitly encoding the strings:

```python
>>> str(dep)
    "<DependencyProvider [f\xc3\xb6bar.spam] at ...>"
>>> print dep
    <DependencyProvider [föbar.spam] at ...>
```