CI enhancements
- Add pip package caching - this may not reduce the execution time, but it will at least prevent the occasional ConnectionError
- Send coverage to codecov even if linting fails: one does not have to fix linting errors, then wait for the next build, to get coverage info