Nonlinear homogenization and its applications to composites, polycrystals and smart materials