Add more constructors for QuasiAffineSet

This allows to construct quasi-affine sets from any combination
of ideals and affine schemes.
Use IsConstructibleSubsetOfAffineSpace instead of IsConstructible set.

This also raises the required version for the Sheaves package.
Make Closure return an affine scheme instead of a ring.

This commit also fixes all procedures that use Closure to still work. If
the constructible set was affine to begin with, the QuasiAffineSet property
is set on the returned object.
Remove incorrect assumption in counting polynomial.

An affine subscheme does not necessarily have counting polynomial u^k.
In CountingPolynomial, set the IsAffineSpace property if the constructible set is the entire affine space.

This can be seen if the counting polynomial is u^dim.
Install CountingPolynomial method for affine schemes.
Fix a potential error in AlgebraicThomasData.
When constructing a quasi-affine set, make sure the underlying rings are the same.
Install Intersect2 and Union2 methods for mixes of constructible sets and affine schemes.

Unions and intersections of two affine schemes however should be computed elsewhere.
Install method for ComplementAttr instead of Complement.

This allows us to set the input as the complement attribute of
the newly computed complement.
Install the ComplementAttr method for affine schemes.
Install Difference methods for all combinations of affine schemes and constructible sets.
Fix the description of the Project method.
Install the project method for quasi-affine schemes.
Add EquidimensionalQuasiAffineDecomposition.
Merge pull request #2 from brain0/working

Update AlgebraicThomas package.