Ruby Semantic Version class