Initial implementation of spatial functions

This PR provides initial implementations of spatial functions (i.e. f(x)) which will be used for calculating distributed values for IC/BC/ST. I hope we can discuss the concept and interface based on this and make an agreement. 

Below are some remarks about the current implementation
- Any spatial functions should provide `double operator()(const GeoLib::Point& pnt) const`
- Dynamic polymorphism is used since we don't know which one is used during compilation (see NumLib/Function/ISpatialFunction.h)

In this PR, the following functions are supported
- Linear function of space: f(x) = a + b*x + c*y + d*z
- Linear interpolation along a polyline and a surface