Rational samplerate

Add support to set rational samplerate
Key guidelines for development are
1) Avoid excessive use of uint64 that may be an issue if code is ported into smaller processors
2) Take care of all possible inputs and situations (blade has quite a dynamic range)
3) Write code that can be logically verified, not just mathematically, especially useful in trying to avoid overflows

getter is not implemented, yet, that will probably we for next week and will be another branch