Improve selectivity estimation for assorted match-style operators.
  Quite a few matching operators such as JSONB's @> used "contsel" and
 "contjoinsel" as their selectivity estimators.  That was a bad idea,
 because (a) contsel is only a stub, yielding a fixed default estimate,
 and (b) that default is 0.001, meaning we estimate these operators as
 five times more selective than equality, which is surely pretty silly. 
 There's a good model for improving this in ltree's ltreeparentsel():
 for any "var OP constant" query, we can try applying the operator
 to all of the column's MCV and histogram values, taking the latter
 as being a random sample of the non-MCV values.  That code is
 actually 100% generic, except for the question of exactly what
 default selectivity ought to be plugged in when we don't have stats. 
 Hence, migrate the guts of ltreeparentsel() into the core code, provide
 wrappers "matchingsel" and "matchingjoinsel" with a more-appropriate
 default estimate, and use those for the non-geometric operators that
 formerly used contsel (mostly JSONB containment operators and tsquery
 matching). 
 Also apply this code to some match-like operators in hstore, ltree, and
 pg_trgm, including the former users of ltreeparentsel as well as ones
 that improperly used contsel.  Since commit 
911e70207 just created new
 versions of those extensions that we haven't released yet, we can sneak
 this change into those new versions instead of having to create an
 additional generation of update scripts. 
 Patch by me, reviewed by Alexey Bashtanov 
 Discussion: https://postgr.es/m/12237.
1582833074@sss.pgh.pa.us