Alternative System.Lazy implementation (#8963)
Alternative System.Lazy implementation (#8963)

* Remove use of lock for PublicationOnly

This involves a little bit of trickery. In avoiding the lock we need to
go from m_implementation as PublicationOnly to null in a single step. We
can't do this though without another object, so we reuse out Lazy
object, which basically just spins its wheels until the value is ready.
This shouldn't be a very common scenerio (i.e. hitting that code path)
but it is possible.

* Minimize additional object creation

Storing factory in Lazy object, and passing Lazy as a parameter to
ILazyItem functions. This means that None & PublicationOnly now need no
creation of secondary object.

* Remove Func<T> for default constructor invoking

Fixing startup performance concerns

* Moved non-generic functionality out of Lazy

...and into a helper class

* Expression-bodied functions

yizhang82/coreclr,yizhang82/coreclr,alexperovich/coreclr,parjong/coreclr,krk/coreclr,mmitche/coreclr,rartemev/coreclr,kyulee1/coreclr,mskvortsov/coreclr,krytarowski/coreclr,hseok-oh/coreclr,yeaicc/coreclr,alexperovich/coreclr,sagood/coreclr,cydhaselton/coreclr,mskvortsov/coreclr,gkhanna79/coreclr,hseok-oh/coreclr,James-Ko/coreclr,wtgodbe/coreclr,cshung/coreclr,cmckinsey/coreclr,mmitche/coreclr,AlexGhiondea/coreclr,wateret/coreclr,AlexGhiondea/coreclr,JosephTremoulet/coreclr,mskvortsov/coreclr,pgavlin/coreclr,gkhanna79/coreclr,tijoytom/coreclr,tijoytom/coreclr,botaberg/coreclr,cydhaselton/coreclr,hseok-oh/coreclr,hseok-oh/coreclr,sagood/coreclr,cmckinsey/coreclr,yizhang82/coreclr,botaberg/coreclr,JonHanna/coreclr,poizan42/coreclr,dpodder/coreclr,krk/coreclr,wateret/coreclr,cshung/coreclr,cshung/coreclr,kyulee1/coreclr,wtgodbe/coreclr,yeaicc/coreclr,yizhang82/coreclr,ruben-ayrapetyan/coreclr,mmitche/coreclr,alexperovich/coreclr,cshung/coreclr,russellhadley/coreclr,dpodder/coreclr,YongseopKim/coreclr,pgavlin/coreclr,ruben-ayrapetyan/coreclr,poizan42/coreclr,russellhadley/coreclr,dpodder/coreclr,krytarowski/coreclr,JonHanna/coreclr,jamesqo/coreclr,JonHanna/coreclr,ruben-ayrapetyan/coreclr,parjong/coreclr,dpodder/coreclr,poizan42/coreclr,qiudesong/coreclr,jamesqo/coreclr,pgavlin/coreclr,krk/coreclr,James-Ko/coreclr,pgavlin/coreclr,hseok-oh/coreclr,rartemev/coreclr,yeaicc/coreclr,sagood/coreclr,James-Ko/coreclr,krk/coreclr,botaberg/coreclr,cmckinsey/coreclr,mskvortsov/coreclr,qiudesong/coreclr,kyulee1/coreclr,rartemev/coreclr,rartemev/coreclr,ragmani/coreclr,pgavlin/coreclr,krytarowski/coreclr,cmckinsey/coreclr,cshung/coreclr,JosephTremoulet/coreclr,poizan42/coreclr,jamesqo/coreclr,mmitche/coreclr,ragmani/coreclr,russellhadley/coreclr,cydhaselton/coreclr,mmitche/coreclr,poizan42/coreclr,YongseopKim/coreclr,krytarowski/coreclr,cydhaselton/coreclr,AlexGhiondea/coreclr,alexperovich/coreclr,James-Ko/coreclr,rartemev/coreclr,wateret/coreclr,JonHanna/coreclr,krytarowski/coreclr,cshung/coreclr,ragmani/coreclr,JonHanna/coreclr,yeaicc/coreclr,parjong/coreclr,wtgodbe/coreclr,alexperovich/coreclr,kyulee1/coreclr,wateret/coreclr,qiudesong/coreclr,dpodder/coreclr,wateret/coreclr,cmckinsey/coreclr,yizhang82/coreclr,cydhaselton/coreclr,ruben-ayrapetyan/coreclr,gkhanna79/coreclr,ruben-ayrapetyan/coreclr,poizan42/coreclr,tijoytom/coreclr,jamesqo/coreclr,JosephTremoulet/coreclr,qiudesong/coreclr,ragmani/coreclr,tijoytom/coreclr,dpodder/coreclr,parjong/coreclr,parjong/coreclr,botaberg/coreclr,YongseopKim/coreclr,tijoytom/coreclr,gkhanna79/coreclr,sagood/coreclr,YongseopKim/coreclr,JosephTremoulet/coreclr,James-Ko/coreclr,wtgodbe/coreclr,krk/coreclr,cmckinsey/coreclr,rartemev/coreclr,AlexGhiondea/coreclr,mmitche/coreclr,mskvortsov/coreclr,yeaicc/coreclr,mskvortsov/coreclr,JosephTremoulet/coreclr,krytarowski/coreclr,russellhadley/coreclr,AlexGhiondea/coreclr,wateret/coreclr,botaberg/coreclr,hseok-oh/coreclr,YongseopKim/coreclr,russellhadley/coreclr,James-Ko/coreclr,tijoytom/coreclr,kyulee1/coreclr,jamesqo/coreclr,ragmani/coreclr,YongseopKim/coreclr,pgavlin/coreclr,ruben-ayrapetyan/coreclr,gkhanna79/coreclr,cmckinsey/coreclr,AlexGhiondea/coreclr,JosephTremoulet/coreclr,sagood/coreclr,botaberg/coreclr,parjong/coreclr,ragmani/coreclr,yeaicc/coreclr,yeaicc/coreclr,jamesqo/coreclr,qiudesong/coreclr,russellhadley/coreclr,wtgodbe/coreclr,qiudesong/coreclr,krk/coreclr,alexperovich/coreclr,gkhanna79/coreclr,cydhaselton/coreclr,yizhang82/coreclr,sagood/coreclr,wtgodbe/coreclr,kyulee1/coreclr,JonHanna/coreclr