Layout now implemented in gxVisual instead of gxViewElement

As only visuals can have a layout.
Various naming improvements
No more SetConstraint for gxVisual

Not all layouts support this, and we don't want to introduce
SetConstraint to the base gxLayout class.
gxConstraintLayout Introduced, representing layouts that involve constraints
Constraints are now stored into gxConstraints
A Major rewrite to the constraints mechanism
Got rid of constraint GetType and ID member (replaced with &typeid)
Constraint no longer make use of enums