Adding missing file
Adding util::function::target and util::function::target_type
Adding more tests for util::function
One more test, fixing existing tests