Csv uploads validation

Add a new action to accept uploading of CSV files.

- New view, store CSV data to backdrop.
- Fail if the request is too large.
- Validate columns in header and rows match.
- Validate UTF8
- Share common code between JSON and CSV views.

As part of this quite a lot of movement has happened around parsing and validation of backdrop records.

- Field validation is called from the Record constructor. This is so that we can't create invalid Records.
- ValidationErrors are raised from validation or from parsing. This makes it a bit easier to handle them consistently in the view.