[#78806122] Return 400 on module validation error

At the moment we fail with a 500 for what should be a 400.

This change required blank=True to be set on a few models. The 'null'
argument only applies to whether the database field can be null. The
'blank' argument applies to the validation.
[#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.
Merge pull request #229 from alphagov/transaction-on-dashboard

[#78806182] Roll back dashboard if any part fails