[fixes #38796421] generate_name has no effect on wells
Merge pull request #676 from JamesGlover/38796421_pacbio_batch_creation_is_failing

[fixes #38796421] generate_name has no effect on wells
Updates acts-as-dag to delete dependant links
Merge pull request #677 from seandunn/38792421_add_dependent_destroy_to_links

Updates acts-as-dag to delete dependant links
[#38959249] Fixes to get cherrypick by spreadsheet working

Reference the EMPTY_WELL constant correctly.
Ensure 'well' is added to the pick list correctly.
Merge pull request #678 from mattdenner/38959249_cherrypicking_is_broken_because_of_constant_name_mismatch

[#38959249] Fixes to get cherrypick by spreadsheet working
[#39107511] Ensure cherrypick by spreadsheet works
Merge pull request #679 from mattdenner/39107511_cherrypick_by_spreadsheet_doesn_t_lay_out_wells_correctly

[#39107511] Ensure cherrypick by spreadsheet works
[#38415325] Added testing of the JSON generation
[#38415325] Refactored JSON generation to be more stream-like

The code before was generating hash structures for the objects, and hash
structures for the actions, and then merging the two together.  This
code uses an approach that is more stream-like, yielding to blocks for
nested structures, and endeavours to generate actions and object data
side-by-side.
[#38415325] Streaming JSON generation
[#38415325] Use response.object in has_many serialization

I have absolutely no idea why this works but we have to use the
response.object value that has been set in the options when serializing
a has_many collection.  It appears to work, I just can't figure out why
the object passed in isn't that value already.
[#38415325] Allow JSON code trees to merge

To support the hierarchical behaviour of JSON output we enable the code
trees to be duplicated and modified.  This allows, for instance,
Io::Asset to define the barcode behaviour, whilst Io::Plate the plate
specific behaviour on top of this.
[#38415325] Added some tests of the JSON grammar tree
[#38415325] Ensure well name is unspecified
[#38415325] Massive reworking of the API

This deals with all of the problems of merging the actions into the JSON
for the results.  It simplifies a lot of the behaviour but complicates
some more and isn't quite right at the moment.

There are features that are failing as they are missing stock well
relationships on the plates:

features/api/searches/find_illumina_b_tubes.feature:54
features/api/searches/find_pulldown_plates.feature:93
features/api/tag_layout_templates.feature:611
features/api/tag_layout_templates.feature:693
[#38415325] has_many needs to paginate the association for actions
[#38415325] Re-enable GC because we can!
[#38415325] Dummy paginate has_many associations

When generating the actions that are available for a has_many
relationship the code uses the will_paginate 'paginate' method.
Unfortunately this is not lazy, loading up to per_page objects into
memory, which may then not be used.  This commit provides an object that
behaves like a will_paginate collection but does not load any of the
physical objects.
[#38415325] Determine pools in a single query

This should return information about the pools using a single SQL query,
resulting in one Request per pool being returning.