Simplify passing of framerate
PipeWireBaseEncodedStream::maxFramerate has a getter for the framerate which returns the value of a std::optional without checking which is very prone to error.
Rather than adding more optionals we can make Fractional a nullable type, a denominator of 0 is not a valid value. If Fraction can specify a null type we don't need optional anywhere.
A comparison operator is also added.