message: Reformat and simplify CHANGELOG.
diff: Version 3.3.3 (development)
  ===========================
  +Discretization improvements
  +---------------------------
  +- Added classes for general block nonlinear finite element operators (deriving
  + from BlockNonlinearForm/ParBlockNonlinearForm). Such operators have
  + assemble-based action and also support assembly of the gradient operator to
  + enable inversion with Newton iteration. This allows solution of nonlinear
  + systems with multiple unknowns which exist in different function spaces.
  +
  +- Added support for elimination of boundary conditions in block matrices.
  +
  - Inherit finite element classes from the new base class TensorBasisElement,
  whenever the basis can be represented by a tensor product of 1D bases.
  +New and updated examples and miniapps
  +-------------------------------------
  +- Added a new serial and parallel example (ex19) that solves the quasi-static
  + incompressible hyperelastic equations. The example demonstrates the use of
  + block nonlinear forms as well as custom block preconditioners.
  +
  +Miscellaneous
  +-------------
  - Added a new developer tool, config/sample-runs.sh, that extracts the sample
  runs from all examples and miniapps and runs them. Optionally, it can save the
  output from the execution to files, allowing comparison between different
  versions and builds of the library.
  -- Added support for elimination of boundary conditions in block matrices.
  +- Add support for building a shared version of the MFEM library with GNU make.
  - When building with the GnuTLS library, switch to using X.509 certificates for
  secure socket authentication. Support for the previously used OpenPGP keys has
  @@ -27,42 +45,23 @@ Version 3.3.3 (development)
  with the visualization tool GLVis, a new set of certificates can be generated
  using the latest version of the script 'glvis-keygen.sh' from GLVis.
  -- Added classes for general block nonlinear finite element operators (deriving
  - from BlockNonlinearForm/ParBlockNonlinearForm). Such operators have
  - assemble-based action and also support assembly of the gradient operator to
  - enable inversion with Newton iteration. This allows solution of nonlinear
  - systems with multiple unknowns which exist in different function spaces.
  -
  -New examples
  -------------------------
  -- Added a new serial and parallel example (ex19) that solves the quasi-static
  - incompressible hyperelastic equations. This demonstrates the use of block
  - nonlinear forms as well as custom block preconditioners.
  -
  -Miscellaneous
  --------------
  - Upgraded MFEM to support Axom 0.2.8. Prior versions are no longer supported.
  -- Add support for building a shared version of the MFEM library with GNU make.
  -
  -API changes (that may affect existing code)
  +API changes
  -----------
  - Introduced a new enum, Matrix::DiagonalPolicy, that replaces the integer
  - parameters in a number of methods that perform elimination of rows and/or
  - columns in matrices. Examples of such methods are:
  - - in class SparseMatrix: EliminateRow(), EliminateCol(), EliminateRowCol(),
  - EliminateRowColMultipleRHS();
  - - in class BilinearForm: EliminateEssentialBC(), EliminateVDofs(),
  - EliminateEssentialBCFromDofs();
  - - in class StaticCondensation: EliminateReducedTrueDofs();
  - - in class BlockMatrix: EliminateRowCol().
  - Any existing code that uses these methods with an explicitly given (integer)
  - constants, will generate compilation errors - please replace such integers
  - with one of the new enum constants.
  + parameters in many methods that perform elimination of rows and/or columns in
  + matrices. Some examples of such methods are:
  + * class SparseMatrix: EliminateRow(), EliminateCol(), EliminateRowCol(), ...
  + * class BilinearForm: EliminateEssentialBC(), EliminateVDofs(), ...
  + * class StaticCondensation: EliminateReducedTrueDofs()
  + * class BlockMatrix: EliminateRowCol()
  + Calling these methods with an explicitly given (integer) constants, will now
  + generate compilation errors, please use one of the new enum constants instead.
  - Modified the virtual method AbstractSparseMatrix::EliminateZeroRows() and its
  implementations in derived classes, to accept an optional 'threshold'
  - parameter, replacing hard-coded threshold values.
  + parameter, replacing previously hard-coded threshold values.
  Version 3.3.2, released on Nov 10, 2017
  