Apply individual intrinsic recognition during inliner.

Rationale:
Inliner could introduce new method calls, in particular
it could change invoke-interface to invoke-virtual,
which could expose new intrinsics. This situation
happens, for example, in Kotlin generated code where
String operations first go through the CharSequence
interface. Rather than running a full new phase,
we just recognize intrinsics when interface calls
are replaced by virtual calls.

This optimization boosts KotlinMicroItems by 100%

Test: test-art-host test-art-target

Change-Id: Ibd0519283d67ed6997b056e34b4eafdd49fcbc2d
3 files changed