cf libalgebratest.cpp for some use case and examples. Be careful when
instantiating templates, it may require instantiation with fields/ring which
have external linkage.

Note on the coding conventions : 
(especially DenseMatrix & DensePolynom)
public API uses primarily GMP mpz_class. Internal API uses the practical data for
accesssing values, that is size_type of the correct STL container. There need a
conversion between public API to internal API, that's why the public function
are in general only small wrappers. For example, to access the (i,j) element of
a matrix, the public user will have i and j lie between 1 and the corresponding
dimension of the matrix, but internally indexes may be between 0 and dim - 1.