I have left broken HOD_Mock broken. Getting this module running with all the ho models is the priority.

Important experiment: creating a very large (Npts = 1e7)
numpy structured array is only marginally more expensive (2.e-5 seconds)
than creating a naked ndarray (1.e-5 seconds).
So I think the mock object should have a galaxies array
attached to it after all. If this can be implemented, it will dramatically simplify future
bookkeeping, such as mock shuffling routines. Needs to be played around with
to see if this is actually possible.

Note that the same is not true for an astropy table, which takes about 1000 times slower
to instantiate (0.02 seconds).
make_mocks is in a sound state to revert to, though does not have the correct functionality
Modified API so that halo_type arrays are used by HOD_Mock.

Now every halo occupation model requires two inputs: a primary halo property, and a halo type.
For traditional HOD models like Zheng's, the halo type is simply ignored.

The HOD_Mock class now creates a bunch of redundant arrays, since I haven't figured out
how I want to store halo catalog information simultaneously with mock galaxy population information.
Example: mock.halos['PRIMARY_HALO_PROPERTY'] is identical to mock.primary_halo_property.
Cleaned up call to simulation object so that default arguments are specified in defaults module
Coded up halo_type_calculator method of halo_occupation. Looks right. Still needs test suite implementation.