Modified to handle EPL form of dark energy equation of state:
 w(z) = w0 + wa z/(1+z)
Removed the __setattr__ and __getattr__ definitions.  As a result,
 no longer accepts Ol as a synonym for Ode, and Ok is no longer
 automatically updated for changes to Om or Ode -- these might
 still be interesting, but probably belong in a different branch.
Updated for comments from nhmc: PEP8 is applied to the routines,
  local variables are used for Om, Ode, Ok, w0, wa to make the
  mathematical routines easier to read, and the full citation for
  the Linder paper is given.
* Update the documentation to reflect Ol -> Ode and the availability
  of w0/wa.
* Add a test routine (test_w0walumdist_mathematica) to test_cosmology
  to test the dark energy equation of state code.
In order to accommodate a variety of dark energy equations of
state, FLRWCosmology is now an abstract base class (using the
Python library abc module).  In order to actually perform
calculations, users must make use of a subclass of FLRWCosmology
that implements a get_w(z) method (which returns the dark energy
EOS at a redshift z).  The remaining functionality remains within
FLRWCosmology.

A number of subclasses are provided
* LambdaCDMCosmology -- this essentially replicates the behavior
  of the old FLRWCosmology class, and assumes dark energy is a
  cosmological constant.  This should be the most common in practice.
* FlatLambdaCDMCosmology -- like LambdaCDMCosmology except it
  assumes flatness.
* wCDMCosmology -- assumes a constant dark energy equation of
  state parameterized by w = const (-1 is the same as LambdaCDM).
* w0waCDMCosmology -- assumes the CPL form for the dark energy eos:
  w(z) = w0 + wa(1-a)
* w0wzCDMCosmology -- assumes the simplest linear expansion (which
  becomes quite dangerous at all but small z): w(z) = w0 + wz*z

In most cases it will also be a good idea to overload _efunc and
_inv_efunc because the computation of things like the luminosity
distance is quite slow otherwise -- all of the above classes do
so in addition to overloading get_w.

The 2 provided default cosmologies (WMAP5/7) are now returned as
LambdaCDMCosmology objects, and the documentation has been
updated.

In addition to the above, in order to avoid the cosmological
parameters from entering into an inconsistent state, the
@property and @x.setter properties are now used to manage Om, Ok,
Ode, and H0.  So, for example, if Om is changed (e.g., cos.Om =
0.4) the value of Ok will be properly updated.  These can be
overloaded to enforce, for example, flatness (as in
FlatLambdaCDMCosmology).  And if H0 is changed .h and .critical_density0
will be updated.
Update __all__ in core to export FlatLambdaCDMCosmology and
w0wzCDMCosmology.
Fix missing exp(3* in FLRWCosmology._efunc
Documentation improvements
Added a class that generalizes the w0, wa form to a user-specified
pivot redshift: w(a) = w_p + w_a (a_p - a).  This is the form used
by the Dark Energy Task Force (2009 version).  Docs updated to mention
this class.

Added some tests of this new form.

Added float(value) checks to the @property.setter functions in
 FLRWCosmology and FlatLambdaCosmology
Make classes static, rename most classes.

* The trailer 'Cosmology' has been removed from the name
  of all classes (except Cosmology itself).  So, for example,
  LambdaCDMCosmology is now LambdaCDM.
* Classes are now static.  So all the attributes ( self.Om ) have
  been mangled ( self.__Om ).  Access is provided via the @property
  mechanism, and no setters are provided.
* get_w has been renamed dark_energy_eos.  It remains abstract.
  There was some discussion of making w a @property.  I didn't do
  this because for some classes it would have to be a function,
  and having the interface be instance.w in some cases and
  instance.w(z) in others seemed confusing.
* efunc and inv_efunc now don't have a leading _ (i.e., they are public)
* efunc and inv_efunc are now @abstractmethod -- subclasses will have
  to overwrite them.  However, they are implemented as before so
  that it is possible for subclasses to call the superclass method.
* FlatLambdaCDM has been removed.  It will be reintroduced when
  Omega_radiation is included in a future branch.
* Many documentation updates for sphinx.
* Tests updated to reflect the modifications.
Fix bug in _w_integral

Changed to call dark_energy_eos
Fix bug in test suite.  Sphinx documentation fix.

* test_wz was calling the (no longer existing) .get_w.  Replaced
  with .dark_energy_eos
* Sphinx math mode fixes to documentation.
Documentation update
Rename internal variables, add ability to compute density parameters(z)

* Remove __ name mangling: __Om -> _Om
* Append 0 to names of parameters to indicate current value: _Om -> _Om0
   Is not applied to h, since that is not common usage.
* dark_energy_eos is renamed to w, so now there is an instance.w(z) method.
* Add similar methods for density parameters: Om(z), Ode(z), Ok(z)
* Restructure dark energy calcluation slightly to make it easier
  for the user to determine how density evolves.
    ** The only abstract method is now w(z)
    ** _w_integral -> _w_integrand
    ** Add de_density method.  This is good to overload if you can,
       but it isn't necessary.
* Tests updated.
* Docs updated.
* parameters.py updated to use blah0 names.
Add test for subclass that only specifies w(z) and not efunc, etc.
Rename de_density to de_density_scale

The old name was potentially slightly ambiguous.  It sounded like
it might return the actual rho_de, when it really just returned
the redshift scaling.
Documentation fixes
Sphinx documentation fixes.

A large number of documentation fixes for sphinx.
* Slashes are now double slashed (\ -> \\) for autodoc processing.
* Documentation of class attributes is now removed, since they
  are all 'hidden' (e.g., _Om).  Sphinx required the documentation
  to use the actual name (like _Ode), which would have the effect
  of suggesting to users that they should modify them directly,
  which we do -not- want.
* All of the @property methods are now documented, which results
  in those being included as attributes in the sphinx docs.
* Sphinx can't seem to handle equations in the Parameters
  or Returns lines, so all of the places where equations are
  used are spun off in to Notes.
* Add return type specifications.
* Documented all __init__ parameters.  This is not included
  in the sphinx documentation by default, although that could
  be changed.