Qibo: a framework for quantum simulation with hardware acceleration