split out delegate/function from events.hpp into function.hpp.Added template typedef of use<delegate> as function and added make_function