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

Fixes #1039


We could leave it synchronous if we decide the act of producing the content for the view paths is synchronous. Does make it particularly hard to plug in a db or anything along those lines in that case. But if we're ok with that, I can revert this change.