Change/simplify projections

More aggressive relimination of

    Lambda { Apply = ... } # Apply

types. Review by @adriaanm @DarkDimius 
That would be valid and more elegant. But reduceProjection is called often, so to not have unforeseen performance degradations we tend to eschew object allocations in hot paths. Can and should come back to this once we have macros or guaranteed inlining. But then it's likely to be a global cleanup by means of a regexp search.