Backport of commits 167[29|30] from trunk.

Was:
Fixing a significant efficiency leak in the code of the field tactic.

The field tactic post-processes the data generated during normalization
to ensure that vanished denominators do not cancel: essentially, this
step removes duplicates from a list of polynomials and uses the
clean list to generate the conjunction of associated non-zero conditions. This
conjunction is the proof obligation the user has to prove by hand after
a successful call to the field tactic.

The computation of the proof obligation statement
was performed using a fine-tuned reduction strategy, coded in
the newring.ml4 file (see the fv-protect tactic).
However, not only this strategy information was forgotten by the kernel,
but the strategy used at Qed time caused a real explosion (examples
normalized in 70s by the tactic have a one hour Qed). No idea why.

The fix consists in opacifying the part of the goal irrelevant to
computation and call the vm on the duplicate removal step. BTW this step 
is programmed in a naive way and can probably be made more efficient.



git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/branches/v8.4@17081 85f007b7-540e-0410-9357-904b9bb8a0f7