ImprovNet: Generating Controllable Musical Improvisations with Iterative Corruption Refinement