Monte Carlo Frameworks: Building Customisable High-performance C++ Applications