Low-Overhead FPGA Middleware for Application Portability and Productivity