[WIP] Spreadsheet validation

This is associated with moving inappropriate code out of config/settings.yml which is associated with the upload of orphan spreadsheets (https://osraav.atlassian.net/browse/OSRA-240)
I've created this pull request just to provide visibility of the approach I've been taking, to see if you want me to progress along these lines. 
Note that this will cause several rspec failures, because I haven't updated the tests to align with this module design. 
Yes I've checked and it would be easy to change to drive the mapping off the column titles. (My only doubt was how it handled the merged cells.)
Nik, could you confirm with the clients that they'd want to go down this route? It would mean that they wouldn't be able to change the header titles in the first 3 rows without impacting the software. It might also then be better to have this mapping in a config file, rather than in a ruby file. Is there a natural place to put such a file within the hierarchy? What do you guys think?