This patch improves Inliner to provide causes/reasons for negative inline decisions.
- It adds one new message field to InlineCost to report causes for Always and Never instances. All Never and Always instantiations must provide a simple message.
- Several functions that used to return the inlining results as boolean are changed to return InlineResult which carries the cause for negative decision.
- Changed remark priniting and debug output messages to provide the additional messages and related inline cost.
- Adjusted tests for changed printing.
Patch by: yrouban (Yevgeny Rouban)