[#81586610] Initial basic asset rack implementation

Sets up the basic framework, and the well_proxy for
subsequent extension.
[housekeeping] Detect when no printer specified
[housekeeping] Remove duplicate code
[housekeeping] Correct indentation
[housekeeping] Improve stock plate lookup
Merge branch 'next_release' of github.com:sanger/sequencescape into 81586610_ss133_-_model_racks_of_strip_tubes_for_x10_library_preparation
[#81586610] Can find wells by locations

Horrible increase in complexity here, with little
in the way of flexibility. Might be that switching
to just having 12 map locations would be better?
Merge pull request #936 from JamesGlover/81586610_ss133_-_model_racks_of_strip_tubes_for_x10_library_preparation

81586610 ss133   model racks of strip tubes for x10 library preparation
Adds csv parser for bioanalysis files and unit test
Add parser for csv bioanalysis files.
Updates qc_file uploading object to use the parser in case it is required by
parameter.
Updates concentration and molarity from CSV parsed file.
Migration to add molarity to well_attributes.
Changes in the test file
Adds tests for invalid syntax and testing data
Modifies parser to use the CSV ruby library.
Modification of the unit test for using the new parser
Changes on bioanalysis file storing
[#81586744] Include schema changes
Convert tabs to spaces
[#81586744] Switch to FasterCSV parser
[#81586744] Parse module decides parsing class

Refactors the parser identification to be located on the Parser module.
This allows easier addition of further parsers.
[#81586744] Refactor QC parsing

- Parser module converts CSV to array to avoid
repeated conversion
- Exception raised by Parser, not qcable
- Plates update wells, not QCfile
Merge pull request #946 from JamesGlover/81586744_qc_uploading_hpt_bio

81586744 qc uploading hpt bio