distinguish "inlineable" from "declared as inline" (#48250)
This commit addresses the current asymmetry in handling
`@inline/@noinline` declarations by storing the information in
`src::CodeInfo`. `src` now has the `inlining` field that indicates
the inlining declaration as follows:
- `src.inlining == 0`: no declaration
- `src.inlining == 1`: declared as `@inline`
- `src.inlining == 2`: declared as `@noinline`
This change is a preparation for an upcoming refactor that will allow
for judging inlineability at callsites of `is_inlineable`, while leaving
the `inline_cost` function to simply compute the inlining cost without
determining inlineability.