A framework for implementing decomposition-based algorithms for solving integer programs