Overridden -setStoreItem: to call -[ETLayout tearDown] before deserializing
Give the responsibility to call -setUp to ETLayoutItem only, either in -setLayout: or -[ETLayoutItem didLoadObjectGraph]

-mapLayerItemIntoLayoutContext is not needed anymore in -[ETLayout didLoadObjectGraph].

For a layout in use, reloading it doesn't touch -layerItem, that will remain valid and mapped.
For a layout not yet in use, -mapLayerItemIntoLayoutContext will be triggered by ETLayoutItem.
Removed ETLayoutItem.layout and related methods
Changed ETLayoutExecutor API to work with ETLayoutItemGroup objects only
Moved layout deserialization code from ETLayoutItem to ETLayoutItemGroup
Improved ETLayoutItemGroup.layout reloading to call -tearDown, -setUp: and -didChangeLayout: correctly

For example, when layout is moved to another item in a single commit, or when the attached tool is the active tool.

Previously we could set up a new layout which was not torn down.

Note: For -setStoreItem: and -will/didLoadObjectGraph, we cannot know in which order the objects receive them. Which means -tearDown and -setUp: must called together to ensure all layout objects receive them correctly.
Removed ETLayout.usesCustomLayoutSize (never used)
Turned layoutSize into a transient property

Renamed proposedLayoutSize into oldProposedLayoutSize

Reworked -resetLayoutSize a bit

Added -proposedLayoutSize
Update PhotoViewExample for CoreObject related changes

Introduced PhotoAsset as a model class.
Don't depend on EtoileWeb in PhotoViewExample
Fixed incorrect serialization transformer for ETLayoutItem.valueTransformers

Note: FormExample now launches without a crash.
Changed -renderWithItems:isNewContent: to return the layout size rather than void

Removed -[ETLayoutingContext setSize:]

Don't trigger an immediate layout update in -[ETLayout didLoadObjectGraph]. For a layout update, we must be sure -didLoadObjectGraph has been sent to the context.