Add ULLayoutDimension subclass
Use ULLayoutDimension for width and height
Make ULLayoutItem ULLayoutDimension-aware
Add ULLayoutDimension to header
Create ULLayoutPosition
Construct subclasses with a switch statement, not if/else

Clearer, especially when we add the new ones.
Create XPosition/YPosition objects as appropriate
Return ULLayout{X,Y}Position objects from ULLayoutItem
Add ULLayoutPosition to the header file
Add a little more documentation explaining ULLayoutAttribute's subclasses
Cause type warnings when generating nonsensical constraints (merge)

Merge branch 'refs/heads/feature/attribute-types' into develop
Explain new type-checking feature in README