Added additional operations to Rectangle and made it nonvariant as a result. Covariance is of little use since numeric types are usually related by implicit widening and not by subtyping anyway.
Added Color3 type.
Added missing invariants to color and geometry types and added additional operations.
Removed redundant inheritance from Product.