[Design] Adding support for ViewLocationExpanders to allow modifying view locations

Fixes #1039


This is not part of the expander. I think this should be a separate API completely. @loudej ?