Modular Design Patterns for Hybrid Learning and Reasoning Systems: a taxonomy, patterns and use cases