Changed IContractHost to use std::function instead of an arbitrary
template type. This is because the function_traits object really does a
poor job on std::bind which is the standard method for creating a
generic std::function.