Overall design mostly finished but behind on testing.

Implement WG (renamed from WGMethod) with abstract variational bilinear form (not tested).
New VarBF module representing bilinear forms for variational problems.
Add support in WGBasis for separate arbitrary polynomial degrees for interior and boundary.
Eliminate domain dimension constructor params from WGBasis and WGradSolver, which information can be obtained from the mesh instead.
Add new interface functions in Mesh:
 - integral_vs_local_monomial_on_fe_interior
 - integral_on_ref_fe_face (replaces integral_on_ref_fe_interior)
 - integral_prod_on_fe_face
 - integral_prod_on_ref_fe_face
 - is_boundary_side
 - one_mon
Change non-boundary side related function and type names in Mesh to explicitly distinguish from boundary sides.
New Proj module for projecting onto polynomial spaces on fe faces.