Adjust contract generation for provides in TR

Use the same mechanism as ordinary require/typed to generate
contracts for provide forms.
Eliminate special cases for top-level contract gen

Use the same mechanism as require/typed for doing all
contract gen for make-predicate, cast, etc. Also don't
special-case contract generation for top-level require/typed.
Fix type of expt.

Add expt to random testing.

Haven't seen one of those bugs in a while. Thank you Redex.

Closes PR14823.
Fix other bugs in type of expt.

Found using the new random testing.
Change contract on change-contract-fixups

The context should provide a flattened list of syntax
to the function.
Avoid direct use of type->contract in with-type

Eliminates the last remaining use of type->contract
outside of the type-contract.rkt file. This allows
all contract generation to go through a single point
of control.
Simplify contract generation code

Don't export type->contract except for testing. This
discourages direct use of type->contract in favor of
using the change-contract-fixup approach.

Also consolidate most of the contract-related syntax
properties into a single property containing a prefab
struct instance.
fix control-[ when 'framework:automatic-parens pref is set
Fix math/matrix for new type of expt.
Compile the math library as part of the TR test suite.
reduce CPP noise
expt: repair for large power of inexact between 0 and -1

Closes PR 14824
expt: repair for non-integer power of negative inexact

If the inexact approximation of the power is an integer, then
the result was a real number when it should be a complex number.
db: more information on sqlite3 errors
db: report SQL stmt in errors when available
openssl: disable old SSL protocols by default

Add 'auto alias for 'sslv2-or-v3, both of which now mean
"negotiate a reasonably secure protocol version", where
"secure" excludes SSL 2.0 and 3.0 (since POODLE).
db: use default SSL protocol
update typed/openssl protocol type
replace 'sslv2-or-v3 with 'auto in net libs
remove unnecessary protocol args in tests