support non-modules in @require

Functions and other objects can be passed, which implies a push when the function is passed to apply.
test new @require behavior
remove unnecessary double-uncan for @require
add hook to CannedObject

so that additional post-processing can happen on uncanning
use canning hook in dependent

allows the dependency function to be called even before the real task arguments are unpacked.
docstring for CannedObject.__init__
Merge pull request #3041 from minrk/requirepush

support non-modules in @require