Add Groovy container

This change adds a Groovy container for running un-compiled Groovy
applications.  The detection algorithm for detection of Groovy
applications is a 5-part test and is documented.

[#51899913]
Merge 51899913-groovy-container to master

[Completes #51899913]
Solve variable ordering problem

Previously, the Groovy tests relied on an enumeration that resulted in
a predictable order.  This order was not actually predictable.  This
change removes that dependency.

[#51899913]
Merge 51899913-test-failures to master

[Completes #51899913]
Join with commas rather than spaces

Previously, the collection of context initializers was joined with a
space.  This should have worked, but the error seen when using this
configuration implies that comma-delimiting class names is the only
supported way.  This change joins the collection with commas instead
of spaces.

[#49695345]
Merge 49695345-fix-failure to master

[Completes #49695345]
Merge remote-tracking branch 'upstream/master'