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.
Is this reading 1 byte at a time?  Why?  Can't we use buffered reads here?