[ty] Fix overload public type when implementation has a type-changing decorator
When a decorated `@overload` implementation produces a non-`FunctionLiteral` type
(a signature-preserving `Callable[P, T]` decorator or an untyped one), the binding
type for the function name loses the overload chain. `FunctionLiteral` is what chains
back to the `@overload` stubs via `previous_overload`. Without it, callers see the
decorator's return type instead of the overload signatures.
In `infer_definition_types`, after applying decorators, if the result is a
non-`FunctionLiteral` and the function is the non-`@overload` implementation of an
overload chain, restore the pre-decoration `FunctionLiteral`. Per PEP 484, the
implementation should be ignored by type checkers; only the `@overload` stubs govern
dispatch. The pre-decoration `FunctionLiteral` already chains back to the stubs, so
restoring it gives the correct public type.
Adds mdtests for an untyped decorator and a typed `Callable[P, T]` decorator. Both
now reveal the overload stubs as the public type, matching mypy and pyright.