DCE SimplifyAlwaysThrowing optimizations

We can do two optimizations to this method:
  1) If we have a try catch in the graph, we now allow to simplify
     always throwing instructions to point them directly to the exit
     block.
  2) We now allow to simplify always throwing instruction for
     non-trivial basic blocks i.e. not just Invoke and a Goto. We
     still require that the second to last instruction is an always
     throwing invoke followed by a Goto.

Bug: 227316307
Test: art/test/testrunner/testrunner.py --host --64 --optimizing -b
Change-Id: I8208163e48b07d8a1bb77e11763516f65fb88827
6 files changed