this preallocation code is abandoned for now
Add Neumann boundary values to right-side b.  Change initassemble() to assemble(), and add Dirichlet fcn to signature.  Remove abandoned prealloc() code.
this version does not compile: initial plan for first setting Dirichlet rows (with INSERT_VALUES) then everything else (including Dirichlet columns; with ADD_VALUES)