COFFE 2 - Automatic Modelling and Optimization of Complex and Heterogeneous FPGA Architectures