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.