PyPSUcurvetrace: a flexible, open-source curve tracer using programmable power supplies