The West Indies have stunned hosts India to book a spot in the World Twenty20 final after India twice took wickets on no-ball deliveries.