register multiple setup functions

Instead of setting a setup function you can register one, which does not override the one, that was previously registered.
Provide a ShutdownFunc trait, which acts as counterpart.
So it is possible to have a resource in a provider trait, which has SetupFunc and ShutdownFunc as selftype and which itself could be mixed into a bolt to provide its resource.