Algorithms for Boolean Matrix Factorization using Integer Programming and Heuristics