Initial refactoring to support multi-tenancy and extensibility; Note unit test is broken
Pushed as much reflection as possible to ConstraintInfo creation/caching time
Added support for load by multiple values
Added overloads to provide property name as string; makes metadata-supplied constraints easier to work with.