Add apply extension function that accepts a parameter

I should probably point out that there is another way to do these by adding let which basically converts this to a parameter:

fun Bar.toFoo() = let { Foo().apply { initializeWithBar(it) } }

and

fun makeFoo() = Bar(5).let { Foo().apply { useBar(it); alsoUseBar(it) } }

But seems it would be clearer to do it all in one construct and personally I find let to be very unintuitive.