Kotlin: Implement JvmOverloads annotation
This generates functions that omit parameters with default values, rightmost first, such that Java can achieve a similar experience to Kotlin (which represents calls internally as if the default was supplied explicitly, and/or uses a $default method that supplies the needed arguments).
A complication: combining JvmOverloads with JvmStatic means that both the companion object and the surrounding class get overloads.
@tamasvajk now that I've had to use a piece of background state to cope with type variable references, I've changed the strategy for handling value parameters to use the same mechanism instead of creating a proxy class that wraps IrValueParameter. I've also converted the remaining integration test into a unit test, and added a test for the case you pointed out where one parameter refers to another one.
@tamasvajk I've adopted your suggestion to store the overridden attributes in the declaration stack