Restructure the user guide
Add ImmutablePreBuild annotation

Handle case where property is defaulted from value of another property
Fixes #95
Enhance user guide