Remove ParameterValue erasure

Remove parameter `A` from type `ParameterValue[A]` as it's useless as soon as value is applied/prepared as parameter and is erased when used (always referenced as `ParameterValue[_]`).

Case class is turned as trait with type parameter, and construction is moved to companion object with same arguments, so that instantiation remains the same `ParameterValue(value, setter)`.