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)?