Import of second order pyramids from gmsh

Just extended the gmsh import function to support gmsh element types 14 and 19 according to gmsh documentation. Posting this testing script for future reference:

import gmsh
gmsh.initialize()
gmsh.model.add("single_pyramid")
vol = gmsh.model.addDiscreteEntity(3)
incomplete = False
if incomplete:
  # Define the nodes for pyramid13
  #                5
  #              ,/|\
  #            ,/ .'|\
  #          ,/   | | \
  #        ,/    .' | `.
  #      ,8      |  13  \
  #    ,/       .' w |   \
  #  ,/        10  ^ |    12
  # 1--------7-.'--|-4    `.
  #  `\        |   |  `\    \
  #     `6     .'  +--- 11 - \  -> v
  #       `\   |   `\      `\  \
  #         `\.'     `\      `\`
  #            2-------9--------3
  #                    `\
  #                       u
  gmsh.model.mesh.addNodes(3, vol, [1,2,3,4,5],
                                   [0, 0, 0,
                                    1, 0, 0,
                                    1, 1, 0,
                                    0, 1, 0,
                                    0.5, 0.5, 1])
  gmsh.model.mesh.addNodes(3, vol, [6,7,8,9,10,11,12,13],
                                   [0.5, 0., 0.,
                                    0., 0.5, 0.,
                                    0.25, 0.25, 0.5,
                                    1., 0.5, 0.,
                                    0.75, 0.25, 0.5,
                                    0.5, 1., 0.,
                                    0.75, 0.75, 0.5,
                                    0.25, 0.75, 0.5])
  gmsh.model.mesh.addElementsByType\
    (vol, 19, [1], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13])
else:
  # Define the nodes for pyramid14
  #               5
  #             ,/|\
  #           ,/ .'|\
  #         ,/   | | \
  #       ,/    .' | `.
  #     ,8      |  13  \
  #   ,/       .'   |   \
  # ,/        10    |    12
  #1--------7-.'----4    `.
  #  `\        |      `\    \
  #    `6     .' 14     11   \
  #      `\   |           `\  \
  #        `\.'             `\`
  #           2--------9-------3
  #                    `\
  #                       u
  gmsh.model.mesh.addNodes(3, vol, [1,2,3,4,5],
                                   [0, 0, 2,
                                    1, 0, 2,
                                    1, 1, 2,
                                    0, 1, 2,
                                    0.5, 0.5, 3])
  gmsh.model.mesh.addNodes(3, vol, [6,7,8,9,10,11,12,13,14],
                                   [0.5, 0., 2.,
                                    0., 0.5, 2.,
                                    0.25, 0.25, 2.5,
                                    1., 0.5, 2.,
                                    0.75, 0.25, 2.5,
                                    0.5, 1., 2.,
                                    0.75, 0.75, 2.5,
                                    0.25, 0.75, 2.5,
                                    0.5, 0.5, 2.])
  gmsh.model.mesh.addElementsByType\
    (vol, 14, [1], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
gmsh.model.geo.synchronize()
gmsh.model.mesh.generate(3)
gmsh.option.setNumber("Mesh.MshFileVersion", 2.2)
gmsh.write("single_pyramid.msh")
gmsh.fltk.run()
gmsh.finalize()

import getfem as gf
m = gf.Mesh("import", "gmsh", "single_pyramid.msh")
m.export_to_vtu("single_pyramid.vtu")