Added functionality to properly account for subtyping when overloaded functions are passed as higher order functions; an extension of the subtype functionality in Type will supercede this