Co-learning synaptic delays, weights and adaptation in spiking neural networks