First attempt at working out the solver implementation.
Changed the DomainInterface data structures that hold the field data to std::vector instead of std::map.
Added a lot of functionality to the SmartPointer class and am now using it for polymorphism. Renamed SmartPointer3D to Array3D. Added a few input fields. Will probably need further debugging of the SmartPointer class, as well as changes to the interfaces. May switch to the boost::shared_ptr in the future if bugs persist.