More work on snapAreas.

This is slightly improved, but still really buggy version of the
snapAreas.
Refactored setModelProperty to ControllerBase.