New try without double wrapping of Optionals

* optionalWithStringRegExp was removed. So there is no textual stripping of Optional from the string representation
* Expression now takes and handles T?. So there is no wrapping of Optionals in the generic parameter of Expression
* expect takes a T?, because T is non-optional here and in Expression. So the case that we can put an optional into expect must be handled directly here.
* matchers handle the fact that the actual value is an optional were necessary.