Scientific C++: Building Numerical Libraries the Object-Oriented Way