PERF: Make matplotlib import lazy
Cuts import time by about 23%, from 393ms to 303ms (note these measurements are pretty noisy).  The percentage edges up to 26% if we ignore get_version, since that is negligible in a release.

Downside: we lose some docstrings on plotting methods.  Will need to decide if it is worth a refactor to keep them in place.
Looks like the CI failures are related to missing docstrings I have an alternative fix for this. Should have it up tonight or tomorrow.  Closing in favor of Tom's approach.