Added nuance to shipping rate estimator

Now distinguishing between $0 rates (possibly valid) and nil rates
which could result in a huge loss to a store in a case where
a $1000 shipping fee is reported as a nil by a bad calculator.

Also added an order-level model error message when no eligible
shipping rate is found.

Fixes #3184.