fringe: better error message for fringe unpersistence

Lack of a fringe frame is often characterised by an obscure error
from the depths of the butler that doens't mention anything about
a fringe frame.  This provides a useful error message.
overscan: allow masking of overscan

On HSC, saturated pixels can leak into the overscan.  We
mask them, but they need to be ignored.

Added a statControl keyword argument for control of the
rejection and masking.
Pass NumPy arrays to afwMath.makeInterpolate.
transposeMaskedImage: fix transposition

Wasn't working due to numpy float vs float32 issues with ImageF.
Toughen code to handle the case that no rows are masked

See https://jira.lsstcorp.org/browse/DM-415.  In this case all the rows
were bad, but the masking code passed them all so this bug triggered
Make random number generation in fringe code deterministic
saturationDetection: apply to overscan as well as image

The overscan may be saturated from charge bleeding in from
the image.
defects: activate useFallbackValueAtEdge for interpolation

Lack of use of this feature meant that NANs were not being
interpolated over.