FiniteStateMachine.process: Refuse Non-Deterministic Finite State Machines

Previously, a (more or less) random path was chosen in case of ambiguity
in FiniteStateMachine.process. Instead, we now raise a NotImplementedError.
FiniteStateMachine.process: raise NotImplementedError when epsilon-transition is reached.

Further code cleanup
Small correction.
determine_alphabets considers final output words
transposition not implemented for transducers with non-empty final word out
FiniteStateMachine.equivalence_classes considers final output words
Transducer.intersection considers final output words
FSMState.copy also copies final_word_out
Transducer.asymptotic_moments only accepts transducers with all states final and transducers.GrayCode is now such a transducer.
Implemented fallback univariate factor using singular.
Added doctest to multivariate factor on original issue.
Correct TeX errors (raw string vs. string) in docstring (Gray Code)
Modified a few docstrings to reflect use of final output word
removed determine_alphabets=True from docstrings because it is the default anyway
Use iterators instead of lists
Added examples for FiniteStateMachine.equivalence_classes
is_perfect() for fields
Added copyright header to finite_field_base.pyx

The contents of that header were created automatically from the contents of git
log (every contributor with >10 lines of contribution).
Derivations for rational function fields
is_perfect() for fields