Sorry if I'm missing something, but it seems like this code won't give a very useful error message if the user provides a string that isn't easily turned into a lambda function or a file name... for example, if they mis-type the file name or the lambda function that they want so it's not usable.  I know we can't guard against all possible errors that users make, but could we try to get a more useful message for if this doesn't work?  For example, I just tried the incredibly stupid ```b=galsim.Bandpass('foo')``` and got this not-very-useful response
```
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/Users/rmandelb/git/GalSim/<ipython-input-2-95a486e3bbfe> in <module>()
----> 1 b = galsim.Bandpass('foo')

/Users/rmandelb/git/GalSim/galsim/bandpass.py in __init__(self, throughput, wave_type, blue_limit, red_limit, _wave_list)
    110         if blue_limit is None:
    111             if not isinstance(tp, galsim.LookupTable):
--> 112                 raise AttributeError("blue_limit is required if throughput is not a LookupTable.")
    113             blue_limit = tp.x_min
    114         if red_limit is None:

AttributeError: blue_limit is required if throughput is not a LookupTable.
```

If I had thought that I had a file named 'foo' then I might find this very confusing.
I realize this request might not be easily addressed, in which case don't worry about it.