Combinatorial Chemistry: From Theory to Application