Nanomaterials for Solar Energy Generation and Storage