Text this: Adjoint-Assisted Shape Optimization of Microlenses for CMOS Image Sensors