Move contract validation to it's own class

First part of an effort to move things out of the Pacto module into it's own classes, leaving only delegation on the module itself.