Hint refactoring

I'm not sure what's going on with the git commits... I think I'm doing something wrong.

Anyway, this pulls out each hint into a different class as the GetHints method was getting unwieldy.

I also conflated some changes by acccident and added a hint no one will ever need:

    var x = 1;
    Func<int> f = () => 1;

    PAssert.IsTrue(() => Equals(f, x));

Assertion result:

	Object.Equals(f, (object)(x))
	       \_ __/ .  .       ..
	         |    .  .       ..
	         |    |  \___ ___/|
	         |    |      |    1
	         |    |      1
	         |    delegate Func<int>, type: int ()
	         False, but would have been True if you had invoked 'f'