Support callbacks that are not objects

Currently we only support objects with an __invoke method, which doesn't seem to be necessary.
this sentence is misleading:

- if setting an object, it will not be cloned each time. You get a single instance.
- if setting a callable, the callable will be called each time. But whether this creates a new instance depends on what the callable does (``setShared`` uses ``set`` internally, which is a clear indication something is wrong in the description)