JIT: add OSR patchpoint strategy, inhibit tail duplication (#66208)
Two changes for OSR:
* add new strategies for placing patchpoints -- either at
backedge sources (instead of targets) or adaptive. depending
on number of backedges. Change default to adaptive, since this
works better with the flow we see from C# `for` loops.
* inhibit tail duplication for OSR as it may end up interfering
with loop recognition.
We may not be able to place patchpoints at sources, for various reasons;
if so we fall back to placing them at targets.
We also can't place patchpoints unless block entries are also stack empty
ponts. This means forgoing patchpoints in some IL cases..