[#78806182] Roll back dashboard if any part fails

If any part of a dashboard creation (ie. dashboard, modules, links etc) fails then the entire transaction should be rolled back. This has been done by wrapping the view in a transaction. Unfortunately the transaction provided by Django isn't really suitable for views so this commit also introduces a view decorator that will roll back the transaction if the response code is an error.

Depends on: https://github.com/alphagov/stagecraft/pull/228