Refinements to GValue (#3205)

This is a followup to #3157 with some fixes and refinements now that these changes have had more time to marinate.

Changes are as follows:

   * Refactors
       * Rename PropertyAdding interface to PropertiesHolder
       * Introduce AbstractAddEdgeStepPlaceholder, AbstractAddVertexStepPlaceholder, and AbstractMergeElementStepPlaceholder to deduplicate some of the repetitive code in some of the placeholders
   * Strategy Fixes
       * Fix strategy tests not correctly verifying that GValues are unpinned which previously led to false positives
       * Fix excessive variable pinning in PartitionStrategy, SubgraphStrategy, IncidentToAdjacentStrategy, and AdjacentToIncidentStrategy
   * StepContract/Placeholder Refinement
       * Get rid of placeholder exclusive methods as these add unnecessary branching and casts to strategies. All placeholder methods now must override from the contract
       * Replace most "GValueSafe" getters with "AsGValue" or "WithGValue" getter that directly produces GValues without pinning variables. This is as the main use case for accessing step arguments without pinning variables is to blindly copy all arguments to a new step, in which case its preferred to retain the GValue structure. It's arguably invalid to copy a value on its own to a new step without pinning the variable or retaining the GValue boxing as it would break future calls to updateVariable()
       * Update VertexStepPlaceholder to be a FlatMapStep and RangeGlobalStepPlaceholder to be a FilteringBarrier which is needed to play nicely with LazyBarrierStrategy among others
           * The implementations (especially with regards to RangeGlobalStep) need additional consideration. I will likely spin this off into a separate PR which fixes the fixes the step superclasses of all placeholders to match their concrete equivalents.

Here is a complete listing of the changes to the Placeholder/Contract interfaces:

   * CallStep
       * Replace getMergedParamsGValueSafe() with getStaticParamsAsGValue, note switch from mergedParams to static only.
       * Retains with public Service<S, E> serviceGValueSafe()
   * GraphStep
       * Replace getIdsGValueSafe with getIdsAsGValues
   * VertexStep
       * Replace getEdgeLabelsGValueSafe with getEdgeLabelsAsGValues
   * MergeV/EStep
       * Replace getMergeTraversalGValueSafe with getMergeMapWithGValue
       * Replace getOnCreateTraversalGValueSafe with getOnCreateMapWithGValue
       * Replace getOnMatchTraversalGValueSafe with getOnMatchMapWithGValue
       * Return types are complicated, see javadocs in MergeStepContract
   * IsStep
       * Retained getPredicateGValueSafe()
   * AddElement
       * Replace getLabelGValueSafe with getLabelAsGValue
       * Replace getElementIdGValueSafe with getElementIdAsGValue
       * Replace getPropertiesGValueSafe with getPropertiesWithGValues
   * AddVertex
       * Covered by AddElement changes.
   * AddEdge
       * Replace getFrom/ToGValueSafe with getFrom/ToWithGValue
       * Return types are complicated, see javadocs in AddEdgeStepContract
   * AddProperty
       * Replace getValueGValueSafe with getValueAsGValue
   * RangeGlobal/Local
       * Replace getLowRangeGValueSafe with getLowRangeAsGValue
       * Replace getHighRangeGValueSafe with getHighRangeAsGValue
       * Remove getLowName and getHighName
   * TailGlobal/Local
       * Replace getLimitGValueSafe with getLimitAsGValue
   * HasContainerHolder
       * Retains getPredicatesGValueSafe()
69 files changed