code is sometimes missing from exception

exception_handler should not break if exception does not
contain code attribute
Num of cols and values in rows should be equal

Throw exception if number of columns and values in the rows
is not equal
Return error if issues with CSV file when uploading
Explicit all or nothing validation on CSV upload

Make it a bit more explicit that if any rows in the CSV are invalid then none will be added to backdrop.
Make CSV and JSON endpoints work in a similar way

- Validate bucket name in the same way
- Validate incoming records in the same way
Validate CSV data is UTF8
Rearrange write API validation

- Share common code in write API actions
- Move most validation into Record constructor so that we cannot create invalid records.
- Raise ValidationErrors from parsing and validating. Allows for simpler error handling.
Make distinction between parse and validation errors
Fix parsing of utf8 files with non-ascii chars

@maxfliri
Separate browser session for each splinter test

@maxfliri
Feature test around upload of utf8 files
Return 400 if uploaded file is too large

@maxfliri
Remove redundant check for method

@maxfliri
Extract upload post action into separate method

@maxfliri
Merge branch 'master' into csv-uploads-validation

Conflicts:
	backdrop/core/records.py
	backdrop/write/api.py
	tests/core/test_records.py
Merge pull request #78 from alphagov/csv-uploads-validation

Csv uploads validation