CBHPC: Component-Based High Performance Computing