Allow users to run the DistArray tests from the installed package

This PR enables:

```
In [1]: import distarray

In [2]: distarray.test()
python -m unittest discover -c
.............ssss.............s.......................................................................................s.......................ssss.......................................................................................................................................................................................
----------------------------------------------------------------------
Ran 327 tests in 15.411s

OK (skipped=10)
Running 'python -m unittest discover -s distarray/local/tests -p 'paralleltest*.py'' on each engine...
====>  .parallel_out/3.3.2-unittest.out.1.00
sys:1: ResourceWarning: unclosed file <_io.TextIOWrapper name='/dev/null' mode='w' encoding='UTF-8'>
====>  .parallel_out/3.3.2-unittest.out.1.01
OK (skipped=5)
====>  .parallel_out/3.3.2-unittest.out.1.02
sys:1: ResourceWarning: unclosed file <_io.TextIOWrapper name='/dev/null' mode='w' encoding='UTF-8'>
====>  .parallel_out/3.3.2-unittest.out.1.03
OK (skipped=2)
====>  .parallel_out/3.3.2-unittest.out.1.04
OK
====>  .parallel_out/3.3.2-unittest.out.1.05
OK
====>  .parallel_out/3.3.2-unittest.out.1.06
OK
====>  .parallel_out/3.3.2-unittest.out.1.07
OK
====>  .parallel_out/3.3.2-unittest.out.1.08
OK
====>  .parallel_out/3.3.2-unittest.out.1.09
OK
====>  .parallel_out/3.3.2-unittest.out.1.10
OK
====>  .parallel_out/3.3.2-unittest.out.1.11
OK
mpiexec -np 1 python -m unittest discover -c : -np 4 distarray/apps/engine.py
........sssss.................s.......................................................................................s.......................ssss...............................................................................................................................................................................s.......
----------------------------------------------------------------------
Ran 327 tests in 5.237s

OK (skipped=12)
```

Initially I wrote separate functions that ran each subsection of our tests, but I think it's better to reuse the same test-runner code everywhere.  Now the added file contains a function that calls `make test`.  If we want to improve this, we might take testing out of the `Makefile` and put in in a shell script or python script or something.
This is just to make it print out dots as tests are run.  Settings were
determined by my usual method of mutation and selection.


On Mon, Jul 21, 2014 at 12:02 PM, Kurt Smith <notifications@github.com>
wrote:

> In distarray/run_tests.py:
>
> > +
> > +import distarray
> > +
> > +
> > +def _run_shell_command(specific_cmd):
> > +    """Run a command with subprocess and pass the results through to stdout.
> > +
> > +    First, change directory to the project directory.
> > +    """
> > +    path = os.path.split(os.path.split(distarray.__file__)[0])[0]
> > +    os.chdir(path)
> > +    proc = subprocess.Popen(shlex.split(specific_cmd),
> > +                            stdout=subprocess.PIPE,
> > +                            stderr=subprocess.STDOUT)
> > +    while True:
> > +        char = proc.stdout.read(1).decode()
>
> Is this reading 1 byte at a time? Why? Can't we use buffered reads here?
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/enthought/distarray/pull/537/files#r15180978>.
>