Minor additions to the Real type

```c#
Real r = 5.5;
double d = (double)r;
// now d = 5, NOT 5.5
```
Because there was an explicit cast to int, but not float or double, attempting to cast to double used the int cast operator. Adding float & double cast operators seems like the safest solution.

These use the same code as the ToFloat and ToDouble properties.

In addition, I've added a few ultra-simple math functions:

```c#
Real r1 = 57.8;
bool floor Real.Floor(r1) == 57;
bool ceil = Real.Ceiling(r1) == 58;

Real r2 = 52.1;
bool min = Real.Min(r1, r2) == 52.1;
bool max = Real.Max(r1, r2) == 57.8;

// floor, ceil, min, max are all true
```