message: Took the opportunity to reorganize/update the CHANGELOG
diff: Development version 3.3.1, not released
  =======================================
  -- API change: the methods VectorArrayCoefficient::GetCoeff(int) and
  - MatrixArrayCoefficient::GetCoeff(int,int) now return a pointer to Coefficient
  - (instead of reference). Note that NULL pointer is a valid entry for these two
  - classes - it is treated as the zero function.
  -
  -- Added SUNDIALS version of example 16/16p.
  -
  +New and improved solvers and preconditioners
  +--------------------------------------------
  - Added optional support for the STRUMPACK parallel sparse direct solver and
  preconditioner. STRUMPACK uses Hierarchically Semi-Separable (HSS) compression
  in a fully algebraic manner, with interface similar to SuperLU_DIST. See
  http://portal.nersc.gov/project/sparse/strumpack for more details.
  -- Added a new macro, MFEM_VERSION, defined as a single integer of the form
  - (major*100 + minor)*100 + patch. The new convention is that an even number
  - (i.e. even patch number) denotes a "release" version, while an odd number
  - denotes a "development" version. See config/config.hpp.in.
  +- Added a block lower triangular preconditioner based (only) on the actions of
  + each block, see class BlockLowerTriangularPreconditioner.
  +- Added an optional operator in LOBPCG to projects vectors onto a desired
  + subspace (e.g. divergence-free). Other small changes in LOBPCG include the
  + ability to set the starting vectors and support for relative tolerance.
  +
  +Performance improvements
  +------------------------
  - Memory optimizations in the NCMesh class, which now uses 50% less memory.
  The average cost of an NC element in a uniformly refined mesh (including the
  refinement hierarchy, but excluding the temporary face_list and edge_list)
  is now only about 290 bytes. This also makes the class faster.
  +New and updated examples and miniapps
  +-------------------------------------
  - Added a new meshing miniapp, Shaper, that can be used to resolve complicated
  material interfaces by mesh refinement, e.g. as a tool for initial mesh
  generation from prescribed "material()" function. Both conforming and
  non-conforming (isotropic and anisotropic) refinements are supported.
  -- Added a block lower triangular preconditioner based (only) on the actions of
  - each block, see class BlockLowerTriangularPreconditioner.
  +- Added SUNDIALS version of Example 16/16p.
  -- Added an optional operator in LOBPCG to projects vectors onto a desired
  - subspace (e.g. divergence-free). Other small changes in LOBPCG include the
  - ability to set the starting vectors and support for relative tolerance.
  +Miscellaneous
  +-------------
  +- Added a new macro, MFEM_VERSION, defined as a single integer of the form
  + (major*100 + minor)*100 + patch. The new convention is that an even number
  + (i.e. even patch number) denotes a "release" version, while an odd number
  + denotes a "development" version. See config/config.hpp.in.
  +
  +- Added Linux, Mac and Windows CI testing on GitHub with Travis CI and Appveyor.
  +
  +- Various small fixes and styling updates.
  +
  +API changes
  +-----------
  +- The methods GetCoeff of VectorArrayCoefficient and MatrixArrayCoefficient now
  + return a pointer to Coefficient (instead of reference). Note that NULL pointer
  + is a valid entry for these two classes - it is treated as the zero function.
  Version 3.3, released on Jan 28, 2017
  