Add module level inliner, which is a minimum viable product at this point.
Also add some tests for it.
The module inliner does inlining in module level, which is a more general level
than SCC level. The main benefit is that the inliner order could be released.
With this module inliner, the inline order is not limited to bottom-up order, which
is limited in SCC inliner. Also, we could evaluate more globally scope inline order heuristics.
It's possible to explore the improvement with different inline orders with this module inliner.
RFC: https://lists.llvm.org/pipermail/llvm-dev/2021-August/152297.html
You should be able to remove this line if you are not otherwise changing PassBuilder.cpp at all.