make Syskit.proxy_task_model_for ignore redundant services (closes #8)

What this fixes is that

  Sykit.proxy_task_model_for([task,srv])

should return task if srv is already provided by task. So far,
it was unconditionally creating a placeholder task model.
test: make sure we can generate network SVGs if the test name contains '/'
fix invalidation of cached dependency injection in Profile and RobotDefinition (closes #7)

First, the cached DI object was not invalidated in RobotDefinition,
which meant that adding a device later would break.

Second, modifying the robot would not invalidate the cached DI object
on the underlying Profile object. This is fixed.
test: generalize the availability of _def and _dev shortcuts in profile tests