This commit changes routines that create groups, certain Submagmas aand
vector spaces so that flags that set basic properties (being trivial, being
empty, being cyclic) are set at the same time as the object was created.
This functionality used to be provided through immediate methods, however
this meant that the type of a just-created object was changed immediately
multiple times (with some changes precipitating other changes), causing a
notable performance hit.
Notably, the following changes have been done:
1) In a number of methods used to create groups (or submagmas, when called
from `Subgroup` or cosets) from generating sets, a number of cheaply deduced
properties (such as being cyclic) are set while creating the object. Thus
the immediate methods do not apply for these objects any longer.
2) Type caching in these methods is not worth the effort and has been
removed.
3) A new setter method for `Size` deals similarly with deductions done
before by immediate methods for a known size.
Caveat: The manual specifies (ill-advised one might say) that setting a
different size if a size already is given will be ignored. This is tested in
manual examples and test files. The new setter method therefore cannot be
used to check for this property as an error -- it will do so only if
assertion level is set >=3.
4a) Immediate methods that have been made obsoleteby the changes in 1) and 3)
have been changed to ordinary methods.
4b) A number of immediate methods (e.g. a trivial group is solvable) have
been replaced by `TrueMethods` that have the same effect but are chaper to
run.
4c) Also a number of immediate methods
that need to run often, but apply only rarely (i.e. setting `IsFinite` to
false if a size is set to `infinity`) have been removed.
5) These changes have minor impact on test files and manual tests: A few objects
will have slightly different knowledge about their properties and thus
print differently; respectivelty test code exists that checks explicitly for
such properties having been set by immediate methods.
These tests and examples have been changed.
A few, very instable tests (e.g. checking explicitly for the values of
random elements) have been commented out.
6) Some tests explicitly relied on immediate methods enabling derived series
calculations in special cases of finitely presented groups. These tests
never would have worked if immedite methods were turned off, the respective
finitely presented groups method has been changed accordingly to test
explicitly for the particular situation, thus enabling the same examples to
work.