Add some comments to the Forseti implementation after review.

Convert the Forseti client pool from an anonymous class to a static inner, and clarify the initialization order of the fields in ForsetiLockManager.
ConcurrentLinkedQueue is faster than ConcurrentLinkedDeque, according to their internal documentation. Taking it at face value.
Describe my conclusion that the batched lock-grabbing API should be dropped completely in favor of always taking the locks one at a time.
Rename LockStackingCompatibility to LockReentrancyCompatibility, to keep with the nomenclature.
Note on using SimpleBitSet for reusing client ids.
Lots of other general notes all over the place.
Introduce LogicalPlanningAcceptanceTest
Refactored CostModel to have a single method that computes cost for a given logical plan
Removed dependency from LogicalPlans on LogicalPlanningContext
Make it easy to test produced logical plans

o CardinalityEstimator and CostModel now are functions
o Introduce caching of plan cardinality and cost per planning run
o Changed ASTRewriter to optionally not do parameter extraction (for tests)
Merge pull request #2171 from chrisvest/2.1-forseti-comments

Add some comments to the Forseti implementation after review.
Enable building hash join plans
Implement hash join pipe
Merge pull request #2173 from boggle/2.1-hash-join

2.1 hash join