fix-up for issue 9356 - emit CastExp instead of replace expression types
fix lambdaSetParent
fix Issue 10848 - Compiler should always try to inlining a direct lambda call
An inlined call expression should have the same type with the return type of the function.

Additionally emit correct type for internal generated AssertExp.
Workaround to avoid dicardValue check

For test7585 in test/runnable/template9.d