Make the test server pluggable

This allows it to be replaced when required (i.e. bug #347). Also makes
server and django_url point to the implementation exposed by the
configured server.
Factor out basics of the server implementation

This allows other implementations of a server.

Refs #347
Implement DjangoServer

Refs #347
Fixes for integration tests
Add new 'kale' tests for testing the pluggable backend

Taken from code written by Alexey Kotlyarov <alexey@infoxchange.net.au>
Fix for integration tests
Update docstring
Merge pull request #395 from infoxchange/change-test-server

Change test server to be pluggable