Splits the Rust number API into common traits, with a cleaner design than ```num```.
The base num trait represents data-types that represent abstract numbers, with the usual +-*/% operators.
So no measurement units (```Meters```) or operator blocking (```Position```).
A ```Num``` can't nessesarely represent any specific value (0, 1, 2...),
because a number type might, for example, represent only numbers in the range of 100...356.
Number APIs are each in a different trait and can be also implemented by non numbers.
For example: a ```Vec2``` can't implement ```Num``` but it can implement ```Round```.