Constraints based layout

This PR consists mostly of @jwiggins work on constraints based layouts for Enable. I have also ported the constraints solver from casuarius to kiwisolver.
Please note that the tests-runner will create a new instance of the TestCase class for each test method. In each of these instances `setUp` is called then the associated test method and then tearDown.  As long as a container instance is created in `setUp` and there are no class attributes or global references there should no leaking of state between test method runs and there is no need to reset.