Split planar detector
This MR is for #98 (step 1), in order to split the Detector to
Detector as interface and
PlanarDetector as the implementation of the Cartesian coordinate system.
The modules would not be changed much in this MR to avoid it too big.
The configuration of using
PlanarDetector type would best be implemented in this branch, probably as
case(PlanarDetector) : std::shared_ptr<Detector> detector = std::make_shared<PlanarDetector> (detector_section) ;