Does Cython migration

Moves all pair sampling into cowpy.pyx for now
------------------------------------------------------------------------

We need to find out how to share the same shared library instance across
multiple Python extensions before we can break up the project into
several extension modules.
New experimental build system

This is an attempt to own (and thus control compilation of) the cow
library, and link to it on distutils setups. It would be nice if this
made sense. It works on the Mac, but it's untested on the cluster so it
should stay a branch for now.

Starts Cython experiment
------------------------------------------------------------------------

This looks quite good so far, much cleaner than with swig. So far I
don't forsee any real problems with migrating the wrappers to Cython.
Adds cow library startup/config into cython module

Implements much of the DataField class in Cython
------------------------------------------------------------------------

Builds up the DataField class further
------------------------------------------------------------------------

Still to do:

- Sampling functions on DataField

- ScalarField3d/VectorField3d classes

- Histogram1d class

Then the Cython migration is all caught up

Removes the _lookup variable still left over from master
------------------------------------------------------------------------

I realized in this commit how awesome the `cpdef` keyword is. Cython is
awesome.

Implements the sampling functions in Cython
------------------------------------------------------------------------

This was slightly more involved. Not complicated, just a few extra
lines. There's no special Cython syntax equivalent to numpy.i's
ARGOUTVIEW_ARRAY. To get a copy of the data represented in a C data
structure, you have to get the pointer to the data, then copy it
manually into a Numpy array.

Puts in some safety checks on argument lists
------------------------------------------------------------------------

Cython can't be trusted with untyped arguments to cdef/cpdef
functions. If any of them is None, it may be interpreted as a NULL
pointer to the corresponding C data type. See

http://docs.cython.org/src/userguide/language_basics.html

Makes a small change to the cow C API
------------------------------------------------------------------------

The new() function for dfield's now takes no arguments. This is to be
consistent with other cow data structures. C programs implement their
own work-around function new2() for convenience.
Improves commit/del safety of cow structs

A cow C struct should now behave nicely if it was alloc'ed and del'ed,
but never committed.
Completes a draft of the Cython implementation cow.pyx

Adds a test to serial.py for ensuring graceful failures
------------------------------------------------------------------------

Writes shared extension types into a .pyx file
------------------------------------------------------------------------

This commit is important in that it separates the Cython declarations
from their implementation, which is needed when supporting modules use
the C/Python classes built in the .pyx files.

NOTE: There was a lot of noise getting this to work, until finding

1) You must use `cimport spam` in the .pyx file, not `from spam
   cimport *`

2) The name of the .pxd file must match the name of the extension in the
   setup.py file, otherwise bad things happen
Introduces srhdpack again

There is already a problem here: it seems like there are multiple MPI
contexts being loaded when multiple shared objects are being utilized.
Drops pair calculation into cowpy.pyx, multiple modules is too crazy

Moves all pair sampling into cowpy.pyx for now
------------------------------------------------------------------------

We need to find out how to share the same shared library instance across
multiple Python extensions before we can break up the project into
several extension modules.