A review of metasurfaces: physics and applications