#564

Added a `.centroid()` method to ChromaticObject, which works pretty much the same as `GSObject.centroid()`, but requires a `Bandpass` object against which to integrate.  

The only open question I have is what's the right way to integrate the product of a `Bandpass` and (effectively) an `SED`, when exactly one of these maintains a `wave_list` with specific wavelengths at which the integrand should be evaluated and the other doesn't.  Here I chose the more efficient approach, though possibly less conservative, that if even one multiplier defines a `wave_list`, then integration is done via numpy.trapz instead of integ.int1d.  In contrast, note that `SED.calculateFlux()` implements the logic: numpy.trapz if `Bandpass.wave_list` is not empty, integ.int1d otherwise, which seems a little strange to me now.
My only concern here is the repetition of the evaluateAtWavelength calls here.  It gets called 4 times for each wavelength.  It can easily be reduced to 2 by making these real functions rather than lambdas, so you can save the `mono = obj.evaluateAtWavelength(w)` result and then call both `centroid()` and `getFlux()` from that.  

Combining the xcentroid and ycentroid calculations (so only need one evaluation at each wavelength) would require more work.  We would need to wrap a version of int1d for functions that return a complex number, rather than a double.  We can punt on that for now.

For most objects, the evaluation at each wavelength is trivial, but the one I'm thinking of where this would be a concern is OpticalPSF.  I expect we will make a version down the line that has the aberrations be functions of wavelength (since they are!), so each wavelength would require a new construction of a regular OpticalPSF object.   The setup time for that is quite slow, so we should do our best to avoid gratuitously duplicating the construction of these objects.  And that's one where the effect of the chromaticity on the centroid is a rather interesting question -- so it is likely that people will use this function.