Aerosol Modelling Meets Software Development: Description of the PyCHAM Model (Chemistry with Aerosol Microphysics in Python)