add chained expectation descriptions to the default descriptions of custom matchers with fluent interfaces

this fixes #532
I quickly benchmarked it, for me adding an ivar containing an array in an initialiser takes an additional 0.2μs seconds (averaged from 10000), whilst checking if an ivar is defined takes 0.1μs, as does `||=`.

In short, I'm not concerned about the performance impact, and it's neater coder.