Fiddling with the FEM code in PISM.

Most (if not all) of these changes are cosmetic.

- Split DirichletData into DirichletData_Scalar and
  DirichletData_Vector; avoid a reinterpret_cast.
- Split FEQuadrature into FEQuadrature_Scalar and FEQuadrature_Vector to
  make the API a bit easier to understand.
- Add methods to FEQuadrature_* and FEDOFMap to reduce the number of
  IceModelVec2*::get_array() calls. (IceModelVec2{S,V}::operator() has
  range checking when built with debugging "on" and hides the storage
  order from the user.)