revise erf/erfc handling; scipy.special is required
Fixes for SCF solver

boundary condition handling, resize condition checking, and handle
non-converging systems better

consolidate operations

reduces # of ufunc calls and # of temp array copies

Speed tweaks elsewhere

somewhat obvious solution for gmres reentrancy

it only happens for the gui plot solves, so it doesn't need to be the
fastest method
Improve implicit solver constraints

Improve error handling

Still not perfect, but garbage data no longer escapes SCFsolve
Consolidate SCFeqn code

The two functions were originally far more distinct than they are now,
so I took the opportunity to cut some lines out
Corrected reference potential of mixing

previous expression was equivalent to a vacuum reference instead of a
solvent reference. Slightly changes profiles near the interface, but no
qualitative differences. Also: style tweaks.
Style cleanup, some minor optimizations
New initial guess strategy

Adaptive walks through parameter space to attractive basins. Fun! Also,
cache every result so we don't have to walk as far next time.
More lazy imports for polymer requirements

And some other import reorgs
Coarser rounding leads to more cache hits.

Not sure if faster, though.
Merge pull request #60 from richardsheridan/idea-scf-fixes

Pull feature branch updates for polymer theory code
New sld method

Adding the slabs argument allows universal application of an sld method
to any mixture of materials. Caching the result avoids duplicate
computation since the profile function is expensive.

This modification was pervasive. Is there a way to get Pz, Pw globally
without calling slabs.microslabs(thickness)?