Make a folder for universal morphisms
adjoint functorial - morphism_of and identity_of

Construct the [morphism_of] and [identity_of] parts of functoriality of
the ajdoint functor construction.

After    | File Name                                                 | Before   || Change
--------------------------------------------------------------------------------------------
2m29.97s | Total                                                     | 2m25.68s || +0m04.29s
--------------------------------------------------------------------------------------------
0m04.52s | categories/Adjoint/UniversalMorphisms/FunctorialLaws      |   N/A    || +0m04.51s
0m46.61s | categories/Adjoint/Pointwise                              | 0m47.33s || -0m00.71s
0m09.20s | categories/ExponentialLaws/Law3/Law                       | 0m09.32s || -0m00.12s
0m09.04s | Factorization                                             | 0m08.90s || +0m00.13s
0m08.66s | categories/ExponentialLaws/Law2/Law                       | 0m08.60s || +0m00.06s
0m07.46s | categories/ExponentialLaws/Law4/Law                       | 0m07.42s || +0m00.04s
0m04.38s | categories/Comma/ProjectionFunctors                       | 0m03.98s || +0m00.39s
0m03.72s | categories/LaxComma/CoreLaws                              | 0m03.70s || +0m00.02s
0m02.81s | categories/Comma/Functorial                               | 0m02.84s || -0m00.02s
0m02.13s | categories/GroupoidCategory/Morphisms                     | 0m02.11s || +0m00.02s
0m02.08s | hit/Flattening                                            | 0m02.08s || +0m00.00s
0m01.82s | Types/Equiv                                               | 0m01.80s || +0m00.02s
0m01.62s | categories/ExponentialLaws/Law1/Law                       | 0m01.63s || -0m00.00s
0m01.54s | Modalities/ReflectiveSubuniverse                          | 0m01.60s || -0m00.06s
0m01.49s | categories/Adjoint/Composition/AssociativityLaw           | 0m01.89s || -0m00.39s
0m01.32s | categories/ExponentialLaws/Law4/Functors                  | 0m01.28s || +0m00.04s
0m01.27s | categories/Category/Morphisms                             | 0m01.23s || +0m00.04s
0m01.21s | categories/Grothendieck/PseudofunctorToCat                | 0m01.16s || +0m00.05s
0m01.16s | categories/Functor/Sum                                    | 0m01.20s || -0m00.04s
0m01.10s | categories/UniversalProperties                            | 0m01.07s || +0m00.03s
0m01.08s | categories/Functor/Composition/Laws                       | 0m01.08s || +0m00.00s
0m01.08s | categories/Adjoint/HomCoercions                           | 0m01.02s || +0m00.06s
0m01.00s | categories/Functor/Paths                                  | 0m00.98s || +0m00.02s
0m00.92s | categories/Adjoint/Composition/IdentityLaws               | 0m00.98s || -0m00.05s
0m00.92s | Types/Paths                                               | 0m00.88s || +0m00.04s
0m00.90s | categories/Functor/Pointwise/Properties                   | 0m00.93s || -0m00.03s
0m00.89s | Basics/Equivalences                                       | 0m00.93s || -0m00.04s
0m00.84s | categories/Pseudofunctor/RewriteLaws                      | 0m00.81s || +0m00.02s
0m00.83s | Basics/PathGroupoids                                      | 0m00.81s || +0m00.01s
0m00.76s | categories/Adjoint/UnitCounitCoercions                    | 0m00.70s || +0m00.06s
0m00.72s | categories/Category/Sigma/OnMorphisms                     | 0m00.67s || +0m00.04s
0m00.72s | categories/Comma/InducedFunctors                          | 0m00.73s || -0m00.01s
0m00.71s | categories/Pseudofunctor/FromFunctor                      | 0m00.82s || -0m00.10s
0m00.69s | categories/Pseudofunctor/Identity                         | 0m00.76s || -0m00.07s
0m00.65s | Types/Sigma                                               | 0m00.71s || -0m00.05s
0m00.60s | categories/Category/Sigma/Core                            | 0m00.60s || +0m00.00s
0m00.55s | EquivalenceVarieties                                      | 0m00.51s || +0m00.04s
0m00.52s | categories/Adjoint/Composition/Core                       | 0m00.59s || -0m00.06s
0m00.48s | categories/Comma/Core                                     | 0m00.45s || +0m00.02s
0m00.47s | Extensions                                                | 0m00.47s || +0m00.00s
0m00.46s | categories/LaxComma/CoreParts                             | 0m00.46s || +0m00.00s
0m00.43s | categories/LaxComma/Core                                  | 0m00.41s || +0m00.02s
0m00.43s | categories/Category/Sum                                   | 0m00.46s || -0m00.03s
0m00.42s | hit/Spheres                                               | 0m00.36s || +0m00.06s
0m00.41s | categories/Comma/Dual                                     | 0m00.44s || -0m00.03s
0m00.39s | categories/Structure/IdentityPrinciple                    | 0m00.36s || +0m00.03s
0m00.37s | categories/Adjoint/UniversalMorphisms/FunctorialParts     |   N/A    || +0m00.37s
0m00.36s | categories/ProductLaws                                    | 0m00.34s || +0m00.01s
0m00.36s | categories/Functor/Prod/Universal                         | 0m00.43s || -0m00.07s
0m00.35s | categories/SetCategory/Morphisms                          | 0m00.36s || -0m00.01s
0m00.34s | categories/Adjoint/Paths                                  | 0m00.30s || +0m00.04s
0m00.32s | categories/DualFunctor                                    | 0m00.28s || +0m00.03s
0m00.30s | categories/Adjoint/UniversalMorphisms/Core                | 0m00.27s || +0m00.02s
0m00.29s | categories/Limits/Core                                    | 0m00.29s || +0m00.00s
0m00.28s | Types/Universe                                            | 0m00.26s || +0m00.02s
0m00.28s | Types/Prod                                                | 0m00.27s || +0m00.01s
0m00.27s | categories/Functor/Composition/Functorial/Core            | 0m00.22s || +0m00.05s
0m00.26s | categories/ExponentialLaws/Law0                           | 0m00.27s || -0m00.01s
0m00.26s | categories/InitialTerminalCategory/Pseudofunctors         | 0m00.31s || -0m00.04s
0m00.26s | categories/NaturalTransformation/Isomorphisms             | 0m00.28s || -0m00.02s
0m00.25s | TruncType                                                 | 0m00.26s || -0m00.01s
0m00.24s | categories/FunctorCategory/Morphisms                      | 0m00.21s || +0m00.03s
0m00.23s | categories/ExponentialLaws/Law1/Functors                  | 0m00.22s || +0m00.01s
0m00.22s | categories/NaturalTransformation/Paths                    | 0m00.26s || -0m00.04s
0m00.22s | categories/Functor/Pointwise/Core                         | 0m00.25s || -0m00.03s
0m00.22s | categories/Functor/Prod/Core                              | 0m00.19s || +0m00.03s
0m00.21s | categories/ExponentialLaws/Law2/Functors                  | 0m00.16s || +0m00.04s
0m00.21s | categories/NaturalTransformation/Composition/Laws         | 0m00.23s || -0m00.02s
0m00.20s | categories/Limits/Functors                                | 0m00.21s || -0m00.00s
0m00.20s | hit/Circle                                                | 0m00.22s || -0m00.01s
0m00.19s | categories/PseudonaturalTransformation/Core               | 0m00.17s || +0m00.01s
0m00.19s | ObjectClassifier                                          | 0m00.17s || +0m00.01s
0m00.18s | Tactics                                                   | 0m00.16s || +0m00.01s
0m00.18s | Fibrations                                                | 0m00.19s || -0m00.01s
0m00.18s | categories/FunctorCategory/Dual                           | 0m00.18s || +0m00.00s
0m00.17s | categories/Pseudofunctor/Core                             | 0m00.11s || +0m00.06s
0m00.17s | categories/Structure/Core                                 | 0m00.18s || -0m00.00s
0m00.16s | Types/Sum                                                 | 0m00.19s || -0m00.03s
0m00.16s | categories/Functor/Prod/Functorial                        | 0m00.17s || -0m00.01s
0m00.16s | categories/NaturalTransformation/Prod                     | 0m00.16s || +0m00.00s
0m00.16s | categories/Adjoint/Hom                                    | 0m00.14s || +0m00.01s
0m00.16s | categories/InitialTerminalCategory/Functors               | 0m00.14s || +0m00.01s
0m00.16s | Types/Forall                                              | 0m00.15s || +0m00.01s
0m00.16s | categories/Comma/Projection                               | 0m00.12s || +0m00.04s
0m00.15s | categories/IndiscreteCategory                             | 0m00.13s || +0m00.01s
0m00.15s | categories/Category/Prod                                  | 0m00.13s || +0m00.01s
0m00.15s | categories/KanExtensions/Functors                         | 0m00.17s || -0m00.02s
0m00.14s | categories/Grothendieck/ToSet                             | 0m00.20s || -0m00.06s
0m00.14s | categories/NaturalTransformation/Pointwise                | 0m00.14s || +0m00.00s
0m00.14s | Types/Arrow                                               | 0m00.12s || +0m00.02s
0m00.14s | categories/CategoryOfSections/Core                        | 0m00.14s || +0m00.00s
0m00.13s | categories/HomFunctor                                     | 0m00.17s || -0m00.04s
0m00.13s | HSet                                                      | 0m00.18s || -0m00.04s
0m00.12s | categories/Cat/Core                                       | 0m00.14s || -0m00.02s
0m00.12s | categories/Comma                                          | 0m00.12s || +0m00.00s
0m00.12s | Basics/Trunc                                              | 0m00.12s || +0m00.00s
0m00.12s | categories/Category/Sigma/OnObjects                       | 0m00.14s || -0m00.02s
0m00.12s | categories/NaturalTransformation/Sum                      | 0m00.11s || +0m00.00s
0m00.12s | hit/Suspension                                            | 0m00.12s || +0m00.00s
0m00.12s | categories/NatCategory                                    | 0m00.11s || +0m00.00s
0m00.12s | categories/FunctorCategory/Functorial                     | 0m00.13s || -0m00.01s
0m00.12s | HProp                                                     | 0m00.14s || -0m00.02s
0m00.12s | categories/Adjoint/UnitCounit                             | 0m00.15s || -0m00.03s
0m00.11s | Basics/Overture                                           | 0m00.08s || +0m00.03s
0m00.11s | UnivalenceImpliesFunext                                   | 0m00.12s || -0m00.00s
0m00.11s | categories/ExponentialLaws/Law3/Functors                  | 0m00.12s || -0m00.00s
0m00.11s | categories/Grothendieck/ToCat                             | 0m00.09s || +0m00.02s
0m00.11s | categories/KanExtensions/Core                             | 0m00.12s || -0m00.00s
0m00.11s | categories/NaturalTransformation/Composition/Core         | 0m00.09s || +0m00.02s
0m00.10s | Types/Bool                                                | 0m00.08s || +0m00.02s
0m00.10s | Tactics/RewriteModuloAssociativity                        | 0m00.12s || -0m00.01s
0m00.10s | categories/InitialTerminalCategory/NaturalTransformations | 0m00.10s || +0m00.00s
0m00.10s | categories/Adjoint                                        | 0m00.11s || -0m00.00s
0m00.10s | categories/Cat/Morphisms                                  | 0m00.08s || +0m00.02s
0m00.10s | categories/Adjoint/Composition/LawsTactic                 | 0m00.08s || +0m00.02s
0m00.09s | categories/FunctorCategory                                | 0m00.05s || +0m00.03s
0m00.09s | categories/NaturalTransformation                          | 0m00.09s || +0m00.00s
0m00.09s | Types/Record                                              | 0m00.08s || +0m00.00s
0m00.08s | categories/DependentProduct                               | 0m00.08s || +0m00.00s
0m00.08s | categories/Adjoint/Utf8                                   | 0m00.08s || +0m00.00s
0m00.08s | categories/Adjoint/Dual                                   | 0m00.08s || +0m00.00s
0m00.08s | categories/LaxComma/Notations                             | 0m00.10s || -0m00.02s
0m00.08s | categories/Cat                                            | 0m00.04s || +0m00.04s
0m00.08s | categories/LaxComma                                       | 0m00.11s || -0m00.03s
0m00.08s | Functorish                                                | 0m00.08s || +0m00.00s
0m00.08s | categories/InitialTerminalCategory                        | 0m00.08s || +0m00.00s
0m00.08s | categories/ExponentialLaws/Law1                           | 0m00.05s || +0m00.03s
0m00.08s | coq/Init/Peano                                            | 0m00.08s || +0m00.00s
0m00.08s | categories/Adjoint/Identity                               | 0m00.07s || +0m00.00s
0m00.08s | categories/Grothendieck                                   | 0m00.09s || -0m00.00s
0m00.08s | categories/Functor/Prod                                   | 0m00.06s || +0m00.02s
0m00.08s | categories/GroupoidCategory/Core                          | 0m00.08s || +0m00.00s
0m00.08s | categories/Category/Subcategory/Wide                      | 0m00.06s || +0m00.02s
0m00.08s | categories/Category/Objects                               | 0m00.09s || -0m00.00s
0m00.08s | categories/LaxComma/Utf8                                  | 0m00.10s || -0m00.02s
0m00.08s | categories/NaturalTransformation/Identity                 | 0m00.08s || +0m00.00s
0m00.08s | categories/NaturalTransformation/Notations                | 0m00.06s || +0m00.02s
0m00.08s | categories/SetCategory/Functors/SetProp                   | 0m00.10s || -0m00.02s
0m00.08s | categories/NaturalTransformation/Composition/Functorial   | 0m00.06s || +0m00.02s
0m00.08s | categories/Limits                                         | 0m00.11s || -0m00.03s
0m00.08s | categories/Category/Subcategory/Full                      | 0m00.04s || +0m00.04s
0m00.08s | categories/Category/Pi                                    | 0m00.08s || +0m00.00s
0m00.07s | Conjugation                                               | 0m00.08s || -0m00.00s
0m00.07s | hit/Interval                                              | 0m00.07s || +0m00.00s
0m00.07s | categories/Functor/Dual                                   | 0m00.04s || +0m00.03s
0m00.07s | categories/PseudonaturalTransformation                    | 0m00.06s || +0m00.01s
0m00.07s | categories/Category/Dual                                  | 0m00.07s || +0m00.00s
0m00.07s | categories/ExponentialLaws/Law2                           | 0m00.06s || +0m00.01s
0m00.07s | categories/Category/Subcategory                           | 0m00.06s || +0m00.01s
0m00.07s | Types/Unit                                                | 0m00.08s || -0m00.00s
0m00.07s | categories/InitialTerminalCategory/Core                   | 0m00.06s || +0m00.01s
0m00.07s | categories/Adjoint/UniversalMorphisms                     | 0m00.10s || -0m00.03s
0m00.07s | categories/CategoryOfGroupoids                            | 0m00.07s || +0m00.00s
0m00.07s | categories/Pseudofunctor                                  | 0m00.09s || -0m00.01s
0m00.07s | categories/Adjoint/Notations                              | 0m00.06s || +0m00.01s
0m00.07s | categories/NaturalTransformation/Dual                     | 0m00.06s || +0m00.01s
0m00.07s | categories/NaturalTransformation/Composition              | 0m00.05s || +0m00.02s
0m00.07s | categories/InitialTerminalCategory/Notations              | 0m00.08s || -0m00.00s
0m00.07s | categories/Profunctor/Representable                       | 0m00.04s || +0m00.03s
0m00.07s | hit/TwoSphere                                             | 0m00.04s || +0m00.03s
0m00.07s | categories/Profunctor/Identity                            | 0m00.03s || +0m00.04s
0m00.07s | categories/FunctorCategory/Notations                      | 0m00.08s || -0m00.00s
0m00.07s | categories/FunctorCategory/Core                           | 0m00.10s || -0m00.03s
0m00.07s | categories/Profunctor/Utf8                                | 0m00.07s || +0m00.00s
0m00.06s | categories/DiscreteCategory                               | 0m00.07s || -0m00.01s
0m00.06s | categories/Category                                       | 0m00.09s || -0m00.03s
0m00.06s | categories/Profunctor/Core                                | 0m00.08s || -0m00.02s
0m00.06s | categories/SetCategory/Functors                           | 0m00.05s || +0m00.00s
0m00.06s | categories/ExponentialLaws                                | 0m00.09s || -0m00.03s
0m00.06s | categories/ExponentialLaws/Tactics                        | 0m00.08s || -0m00.02s
0m00.06s | Basics/Contractible                                       | 0m00.06s || +0m00.00s
0m00.06s | categories/SetCategory/Core                               | 0m00.07s || -0m00.01s
0m00.06s | categories/ExponentialLaws/Law4                           | 0m00.07s || -0m00.01s
0m00.06s | Misc                                                      | 0m00.04s || +0m00.01s
0m00.06s | categories/Functor/Pointwise                              | 0m00.05s || +0m00.00s
0m00.06s | categories/Category/Univalent                             | 0m00.08s || -0m00.02s
0m00.06s | categories/Comma/Notations                                | 0m00.07s || -0m00.01s
0m00.06s | categories/Structure/Notations                            | 0m00.04s || +0m00.01s
0m00.06s | categories/SetCategory                                    | 0m00.04s || +0m00.01s
0m00.06s | categories/Category/Notations                             | 0m00.07s || -0m00.01s
0m00.06s | categories/Adjoint/Composition                            | 0m00.06s || +0m00.00s
0m00.06s | categories/GroupoidCategory                               | 0m00.03s || +0m00.03s
0m00.05s | categories/Adjoint/Core                                   | 0m00.06s || -0m00.00s
0m00.05s | categories/Category/Utf8                                  | 0m00.05s || +0m00.00s
0m00.05s | categories/Category/Sigma                                 | 0m00.03s || +0m00.02s
0m00.05s | categories/Profunctor/Notations                           | 0m00.08s || -0m00.03s
0m00.05s | categories/ExponentialLaws/Law3                           | 0m00.09s || -0m00.03s
0m00.05s | categories/CategoryOfSections                             | 0m00.06s || -0m00.00s
0m00.05s | Basics/FunextVarieties                                    | 0m00.07s || -0m00.02s
0m00.05s | categories/KanExtensions                                  | 0m00.09s || -0m00.03s
0m00.05s | categories/Structure                                      | 0m00.07s || -0m00.02s
0m00.05s | categories/Category/Core                                  | 0m00.08s || -0m00.03s
0m00.05s | Tactics/BinderApply                                       | 0m00.06s || -0m00.00s
0m00.05s | coq/Program/Tactics                                       | 0m00.03s || +0m00.02s
0m00.05s | categories/Structure/Utf8                                 | 0m00.03s || +0m00.02s
0m00.05s | categories/NaturalTransformation/Core                     | 0m00.07s || -0m00.02s
0m00.04s | categories/Functor/Identity                               | 0m00.04s || +0m00.00s
0m00.04s | coq/Init/Datatypes                                        | 0m00.03s || +0m00.01s
0m00.04s | categories/Profunctor                                     | 0m00.07s || -0m00.03s
0m00.04s | categories/Category/Strict                                | 0m00.04s || +0m00.00s
0m00.04s | coq/Init/Specif                                           | 0m00.04s || +0m00.00s
0m00.04s | hit/IntervalImpliesFunext                                 | 0m00.04s || +0m00.00s
0m00.04s | Types/Empty                                               | 0m00.03s || +0m00.01s
0m00.04s | categories/Functor/Core                                   | 0m00.05s || -0m00.01s
0m00.04s | Types                                                     | 0m00.04s || +0m00.00s
0m00.04s | categories/Functor/Composition/Core                       | 0m00.03s || +0m00.01s
0m00.04s | coq/Init/Logic_Type                                       | 0m00.04s || +0m00.00s
0m00.04s | NullHomotopy                                              | 0m00.06s || -0m00.01s
0m00.04s | UnivalenceAxiom                                           | 0m00.04s || +0m00.00s
0m00.04s | Basics                                                    | 0m00.04s || +0m00.00s
0m00.04s | FunextAxiom                                               | 0m00.04s || +0m00.00s
0m00.03s | categories/Comma/Utf8                                     | 0m00.06s || -0m00.03s
0m00.03s | Basics/UniverseLevel                                      | 0m00.03s || +0m00.00s
0m00.03s | Basics/Pointed                                            | 0m00.04s || -0m00.01s
0m00.03s | Types/Nat                                                 | 0m00.04s || -0m00.01s
0m00.02s | coq/Unicode/Utf8                                          | 0m00.02s || +0m00.00s
0m00.02s | coq/Init/Logic                                            | 0m00.02s || +0m00.00s
0m00.02s | coq/Unicode/Utf8_core                                     | 0m00.01s || +0m00.01s
0m00.02s | coq/Init/Prelude                                          | 0m00.01s || +0m00.01s
0m00.02s | coq/Bool/Bool                                             | 0m00.01s || +0m00.01s
0m00.02s | coq/Init/Tactics                                          | 0m00.03s || -0m00.00s
0m00.01s | coq/Init/Notations                                        | 0m00.01s || +0m00.00s
Merge pull request #627 from JasonGross/adjoint-functorial-parts

Adjoint functorial parts
Use cbn instead of simpl in [simpl rewrite]

[cbn] is better-behaved, and this will be necessary for some automation
in functoriality of adjoints.
Functorial adjoints - composition_of

Also, add non-dependent versions.  I don't know how to state the
dependent versions, though.

Thanks, @mikeshulman, for your help in #629.

After    | File Name                                             | Before   || Change
----------------------------------------------------------------------------------------
0m12.90s | Total                                                 | 0m07.25s || +0m05.64s
----------------------------------------------------------------------------------------
0m10.06s | categories/Adjoint/UniversalMorphisms/FunctorialLaws  | 0m04.36s || +0m05.70s
0m01.90s | contrib/HoTTBook                                      | 0m01.96s || -0m00.06s
0m00.55s | categories/Adjoint/UniversalMorphisms/FunctorialParts | 0m00.39s || +0m00.16s
0m00.28s | categories                                            | 0m00.36s || -0m00.07s
0m00.08s | categories/Adjoint                                    | 0m00.09s || -0m00.00s
0m00.03s | categories/Adjoint/UniversalMorphisms                 | 0m00.09s || -0m00.06s
Merge pull request #630 from JasonGross/adjoint-functorial-parts-more-2

Functoriality of adjoints - respecting composition
Normalize variable declarations

We no longer need to separate [Variable foo : PreCategory] onto multiple
lines to separate universes.

This change made by invoking

    git ls-files '*.v' | xargs python combine_variables.py

on

```python
#!/usr/bin/env python
from __future__ import with_statement
import re, sys

REG = re.compile(r'^(\s*)Variables?\s+([^:]+):([^\.]+)\.\s*$')
def groups_to_string(indent, variables, types):
    variable_list = [i for i in variables.split(' ') if i]
    var = ('Variables' if len(variable_list) > 1 else 'Variable')
    return '%s%s %s : %s.' % (indent,
                              var,
                              ' '.join(variable_list),
                              types.strip())
def fix_file(contents):
    ret = []
    prev_groups = tuple()
    for line in contents.split('\n'):
        next_groups = REG.findall(line)
        if prev_groups:
            indent, variables, types = prev_groups
            if next_groups:
                new_indent, new_variables, new_types = next_groups[0]
                if new_indent == indent and types.strip() == new_types.strip():
                    prev_groups = (indent, variables + ' ' + new_variables, types)
                else:
                    ret.append(groups_to_string(indent, variables, types))
                    prev_groups = (new_indent, new_variables, new_types)
            else:
                ret.append(groups_to_string(indent, variables, types))
                ret.append(line)
                prev_groups = tuple()
        elif next_groups:
            prev_groups = next_groups[0]
        else:
            ret.append(line)
    if prev_groups:
        ret.append(groups_to_string(*prev_groups))
    return '\n'.join(ret)

if __name__ == '__main__':
    if len(sys.argv) == 1 or '--help' in sys.argv or '-h' in sys.argv:
        print('Usage: %s FILE_NAME [FILE_NAME ..]' % sys.argv[0])
        print('Replaces [Variable X : T. Variable Y : T.] with [Variables X Y : T.]')
        sys.exit(0)
    for i in sys.argv[1:]:
        with open(i, 'r') as f:
            contents = f.read()
        new_contents = fix_file(contents)
        if new_contents != contents:
            with open(i, 'w') as f:
                f.write(new_contents)
```
Merge pull request #632 from JasonGross/combine-variables

Normalize variable declarations
Splitting of coherent idempotents
A counterexample: not every idempotent is coherent
fix nits in Idempotent.v
Merge pull request #635 from mikeshulman/idempotents

Splitting of coherent idempotents
Add LaxComma to categories.v

I had forgotten to export it when I originally ported it.
Merge pull request #639 from JasonGross/fix-lax-cat-deps

Add LaxComma to categories.v
Work around bugs 3773 and (probably) 3772

These are https://coq.inria.fr/bugs/show_bug.cgi?id=3773, open_constr no
longer does typeclass resolution, sometime within the past month, and
https://coq.inria.fr/bugs/show_bug.cgi?id=3772, [rewrite] is
inconsistent about unfolding and evar instantiation.

If we're actually going to merge this, we might want to put `simpl
rewrite` back to using `constr`, and make `simpl erewrite` variants that
use `open_constr` and `erewrite`.
Work around bug 3848

This is https://coq.inria.fr/bugs/show_bug.cgi?id=3848, [refine]
sometimes incorrectly leaves over trivially solvable typeclass goals.
work around bug 3811 in extendable_const_isconnected_inO
Work around bug 3854

This is https://coq.inria.fr/bugs/show_bug.cgi?id=3854, Typeclass
resolution fails where it used to succeed (change in the order of
unification in [refine] or in the order of canonical structure
resolution?)
dummy universe parameter for O_ind_internal, needed by Nullification
Work around bug(?) 3703

This is https://coq.inria.fr/bugs/show_bug.cgi?id=3703, [rewrite] with
Keyed Unification fails to unfold some things that [rewrite] with
unkeyed unification unfolds

N.B. This commit does not compile with the pinned version of Coq.  In a
few commits, we'll bump the submodule.