Refactor inliner

This change rearranges some of the inliner code. The main goal is to
make some of the larger functions more readable and make clearer how to
modify the inliner in the future.

Some of the specific changes include:

* Code to find the actually call target has been factored into a
  separate method.

* The call to TryInlineFromEarlyCache has been made into an early exit
  rather than a fall through case. This lowers the indentation level for
  the main inline case.

* Split the initial checks for whether inlining is possible into
  IsInliningAllowed, IsInliningSupported, and
  IsInliningBudgetAvailable. This is to make it more clear why these
  restrictions are in place. Note that some of these checks are now in a
  different order.

* Factor the checks that come after the inlined body has been optimized
  into a separate method. These haven't been further broken down yet,
  but this would be worthwhile future work.

* Remove CanAllocateRegistersFor. We should be able to allocate
  registers for any compiler we support, and if not, this should be
  caught when we try to allocate registers instead.

Bug: 149392334
Test: ./test/testrunner/testrunner.py --host --optimizing --no-jvmti --ndebug \
      				      --64
Change-Id: Ic1b919e306b7b93944ee5686e2a487b2190c087c
5 files changed