Refactor dashboards view

- make clear the division between spotlight and other logic
- prepare the ground for better urls
- the view method called by the url matcher is just a coordinator
- clear separate paths for put and post
- common put and post logic broken down into steps

This is just a quick refactor that changes no functionality. I didn't give any consideration to whether this stuff is all actually common to both create and update - I just broke it down into steps

I'm not keen on the update_or_setup_dashboard_and_respond method but I'm not sure how to achieve a nicer version of the different points to respond logic without some more serious refactoring using exceptions or something.