switch to unit-system
This commit cleans core/type up. libtrainsim::core::clamp is replaced by std::clamp libtrainsim::core::version now uses a tuple to store the data. This makes comparing two versions easier and cleans. The new compare operators are also tested in the unit tests.