split Model class into Detector, Observable, Galaxy, Model classes

replace old base.py classes with those defined in
scratch/observable.py

Simplify each class, use composition rather than inheritance (Model
has a Galaxy, rather than Model is a Galaxy). Functions (e.g. in
sim.py) that take a model object and generate observables will need to
be refactored, probably to take a Galaxy and Detector object.

Current outline for class responsibilities:
Detector
	fixed detector properties
Observable
	detector instance
	observed properties of lensed galaxy, wtih some/all measured
		image pars, velocities, full image, datacube
	specification of data vector, error vector, wrap vector
Galaxy
	intrinsic properties of galaxy used to generate observables
Model
	galaxy instance (source)
	observable instance (simObs)
	methods to generate observable from galaxy (which may just
		call functions in sim)
	specification of MCMC fit pars
improve class definitions in base.py to work with sim functions

add vSampConvolve attr to Detector class

make vSampShape a property of Detector class with only a getter, since
it depends (uniquely) on vSampConfig and we want it determined on the
fly.

add PSF class to hold atmosFWHM (also start toward adding complexity
for #18)

replace atmosFWHM in Observable class with PSF instance

assign vSampPA attr to detector instance within Observable

add convOpt to Model class (pixel, galsim, or None). not sure where
else to hold this.

remove old Galaxy, Observation, and Model classes, which were replaced
in a previous commit
update sim functions to handle new classes in base.py

in getSamplePos:
    remove fibShape since it is now defined as a property
        of the Detector class

in defineEllipse:
    replace model arg with galaxy

in makeGalVMap:
    replace model arg with galaxy, detector, and psf
    compute inc from cosi rather than from diskBA and diskCA

in makeGalVMap2:
    replace model arg with galaxy and detector
    remove old commented galsim code defining galaxy image

in makeImageBessel:
    replace model arg with galaxy and detector

in makeConvolutionKernel:
    replace model arg with detector and psf

in vmapObs:
    model is retained as arg, but update attribute gets with
        sub-objects, e.g. model.obs.detector

in vmapModel:
    replace model arg with galaxy

in ellModel:
    replace model arg with galaxy
update plot functions with new classes in base.py

replace model arg with detector in drawGSObject and showImage
replace model object with galaxy object in test_ellModel0
update base classes to take on some of the fit functionality

in Observable class:
    add makeConvolutionKernel method to call sim function
        it makes more sense to do this within the class than in fit
        functions

in Model class:
    add updateObservable method
        rather than having code in likelihood function to project
        model into observable space, do it in this class method
update fit functions with new base objects

in lnProbVMapModel:
    replace obs pars with observation object
    move calls to evaluate model observables to model.updateObservable
        (simplifies chisq_like calculation)

in vmapFit:
    replace obs pars with observation object
    remove dataVector setup (see Observable.defineDataVector)
    clean up addNoise since dataVector is defined

in fitObs:
    update with observation arg and pass to vmapFit
minor syntax bug fix and comment
add chisq function to handle wrapped observables (#17)

replaces calculation of chisq in lnProbVMapModel with a self-contained
function.
add tests of chisq function in new test_fit.py
updating makeplots examples with new objects (not finished)
minor bug fix in vmapObs model.galaxy -> model.source
update runGal to call fitObs with observation object
set vSampPA in Observable.setPointing, fix conditional in Model.updateObservable
set dataType in fitObs for img vs spec
fix expection in test_chisq1 (2), note failure in one test
update makeplots modelConstraintPlot to use new objects
fix error in wrapping calculation in chisq. Fixes #19, possibly #16
array fixes to get Combined modelConstraintPlot working

in makeplots example, need to assign model.obs errors so that Model
updateObservable doesn't try to concatenate Nones.

in base, Model.updateObservable, fix imgPar+velocities wrapVector
concatenation.
update makeObs to call object methods for making observables