script/save_basis.py: make sure that output directory exists
support 'qp' evaluation mode in HyperElasticBase

- update .integrate(), .get_fargs(), .get_eval_shape()
update ensure_path() to raise error on failure
new plot_points()
update tests/test_poly_spaces.py for 2_3, 3_4 geometries

- new 2_3_2z.mesh, 3_4_2z.mesh
script/save_basis.py: enable saving all geometry element permutations

- new save_basis_on_mesh()
update HypermeshAsciiMeshIO: use component id as material id