IMORC: Application Mapping, Monitoring and Optimization for High-Performance Reconfigurable Computing