ScaleHLS, a Scalable High-level Synthesis Framework with Multi-level Transformations and Optimizations