[#81586610] Refactor racks as solely strip containers

This implementation enacts the same restrictions as
the 96 well version, but makes them more explicit.
It effectively means that rack purposes will have
fixed layouts of assets, which is a shame, but a
more flexible solution isn't really viable at this
time.
[#81586610] Ammend plate purpose constructor

This ensures that plate purpose plate factories
consistently create plates with the right sti type.
It brings it line with the rack purpose constructor.

Similar changes exist in the unused
cross_plate_merging branch.
[housekeeping] Improve handling of MethodMissing

Previously method missing exceptions would get
caught, and would appear as routing errors. This
was confusing, especially when debugging. Here
we re-throw method missing errors.
[#81586610] Asset racks are unowned

Ownership currently assumes a plate. As this is the
end of a pipeline, tracking probably isn't needed
[#81586610] Don't raise an exception on no source plate

nil is a pain, but we'll let the handling code
deal with it.
[#81586610] Remove comment block

Big bit of commented out code that shouldn't have
been committed in the first place.
[#81586610] Remove redundant step definitions
[#81586610] Asset rack creations

Asset Racks can be created through the API.
[#81586610] Transfers function into asset racks

Asset racks can act like plates in the transfer
process. We'll need to add some new transfers
to handle the re-requests properly.
[#81586610] Asset Rack json includes strip_tubes
[#81586610] Asset racks name strip tubes
Merge in strip tube stuff