Project properties: make classpaths and version selection readonly when necessary, closes #309

Resubmit of #451 to the fd5 branch.
Likewise, we should have something like `project.ExternalToolchain` that would avoid to resolve everything many times.