Initial commit - view code and setup

- Add a setup.py, license, the basic view code and basic test infrastructure
- runtests.py borrowed with thanks from carljm