templates/add_sample.html:
- put field errors in line with the fields

forms.py:
- troubleshooting some inconsistent form error behaviour, the ModelChoiceField needs to be required=False for sites and visit_types else the form validation returns a field error saying they are required when the model doesn't actually require them...they are optional foreign keys in the Sample model

models.py:
- reworked Sample.clean() to be a bit, um, cleaner.
- due to the related temp file issues seen previously where temp files were occasionaly getting stuck in /tmp I'm deleting the temp file with the ValidationError if the project already has the file
api_views.py:
- no need to override post() in SampleList, can do the GET/POST serializer switcharoo from get_serializer_class...though it's a bit of a hack

serializers.py:
- for SampleSerializer, show sha1 for GET but make read-only