Test refactoring

The tests had a lot of boilerplate that has since been moved into a nice
little macro. This will start and stop the server when wrapped around
test.  There is one point the causes a null pointer to be thrown. Not
sure if it is in the execution threads of the tests but it doesn;t
appear to affect the tests directly.

Started fixing up the README as well but its really only a partial
attempt.