Constraints based layout

This PR implements constraints-based layout of components in Enable.

It adds a new class `ContstraintsContainer` which positions its child components using the Cassowary constraints solver. Additionally, constraint variables have been added to `CoordinateBox` (which is the parent of `Component`) that enable Enaml-like constraints specification.

I consider this pull request to be step 1 in a longer process of refactoring layout in Enable and Chaco. It's intended to not break any existing code, even though that might not be a goal of the larger layout refactor.