Throw exception if tau is too small.

Note that this includes the case tau=0, which in theory we could
implement separately with the analytical solution.

Also, improve error handling raising Python expressions where
appropriate.