Holonic Learning: A Flexible Agent-based Distributed Machine Learning Framework