Constraint Satisfaction Problems and Polymorphisms