Split the domain building architecture. I believe this is useful when dealing with a second structure

- CHG : move some of the methods from SimpleONO class to its base class  FDDomain, which deal with the common problem of the domain.
Merge branch 'SplitSimpleONO'
remove two obsolete methods in dd solver
slim the code of boundary condition and Poisson solver

- CHG : remove some obsolete method in BndCond class
- ENH : sparse matrix solver is now a member of TwoDimPoissonSolver.
modify Poisson solver with new boundary condition method (mainly when refreshing rhs vector)

- CHG : change the method to refresh rhs vector. BUT this method has not been tested with BC_Neumann with certain value
tiny revision in time step class

- NEW : an attempt to use variable time step in the simulation.
major revision on the architecture of the solver. Add a new class to get the solver run as an iteration

- NEW : devise a SolverPack class to make the solvers work together. Add a new class to do that.
- NEW : add a new virtual method in FDDomain in case of some post process of the specific structure (derived class).
- CHG : revise the methods in SctmPhy for setting and getting the value of physical properties. Separate the intrinsic and calculated properties.
- NEW : add the method for outputting Poisson result in SctmDate.
- FIX : fix the bugs in the method of refreshing the potential in SimpleONO class.