Implementation of morphology models as astropy models and testing

Implementation of morphology models as astropy models and testing. 
This will change the global setting of the user to `warn`.
I think you can use [np.errstate](http://docs.scipy.org/doc/numpy/reference/generated/numpy.errstate.html) instead?
```
with np.errstate(invalid='ignore'):
    values = np.select([rr <= rr_0, rr > rr_0], [np.sqrt(rr_0 - rr), 0])
```
Ideally the code should be re-written to handle the different cases differently using indexing, but I'm not sure how to do it with good performance and to avoid evaluating `np.sqrt` for the cases of negative numbers.