Issue 2789 - Functions overloads are not checked for conflicts

Two issues here:

- The check in `overloadInsert` is disabled as it can't work until semantic has been run on all overloads.  This has been changed so that the check and the actual insertion can be run seperately.

- The check is out of date. `Type::covariant` is no longer suitable, as it allows a much wider set of conversions and requires return type covariance, which is not needed for two overloads to conflict.  The new function to perform this check is `TypeFunction::overloadConflict`.

http://d.puremagic.com/issues/show_bug.cgi?id=2789