Cleans up constraint definition API slightly, embracing the fact that we don't have a good way to describe arbitrarypredicate definitions.
Moved implementation classes added in 2.0 away from packages where they are exposed as public API.
Fixes test failures
Merge pull request #1398 from jakewins/cleanup-constraint-api

Cleanup constraint api