Modify nonzero structure of mass_matrix to include all overlapping BF supports.

The graph for mass_matrix is now constructed as follows: Identify every pair of
adjacent elements (Ei, Ej). For each pair of nodes (p, q) such that p is in Ei
and q is in Ej, construct an edge. This captures all overlapping basis function
supports. mass_matrix is now (symmetric) positive definite.

Refactored several methods touched in this commit.