Added a __repr__ to source objects

This is convenient in debugging. Also, if there is a slow source taking a lot of time in the computation, having the source_id in the `__repr__` make it possible to recognize which is the source. The use case is inspecting the arguments of a worker via celery.task.control.inspect.