Tools and methods for circular dichroism spectroscopy of proteins: a tutorial review