Two minor fixes for Mono, and an important fix for renaming of virtual methods.

Please review the third commit carefully.  It ensures that certain virtual methods which must not be renamed are not.  These virtual methods are actually very common, for example overrides of Object.Equals() and Object.GetHashCode(), and methods which implement the methods of IDisposable or IEnumerable.  However, this fix is more general: basically, any method which was originally declared in an assembly that is not being included in the project output is excluded from being renamed.