Interval macro

This introduces the macro `@make_interval`

The user types arbitrary code and a correct bounding interval is created, e.g.

`@make_interval((2.1-pi)*(2.1+pi), pi*pi)`


The behaviour is now
```julia
julia> convert(Interval, pi)
[π = 3.1415926535897..., π = 3.1415926535897...]
```

The current situation is quite nice, because you can explicitly create `Interval`s with other types, but then everything just works apparently, e.g.

```
julia> Interval(1//2, 3//4)
[1//2, 3//4]

julia> a = Interval(1//2, 3//4)
[1//2, 3//4]

julia> b = Interval(3//7, 9//12)
[3//7, 3//4]

julia> a + b
[13//14, 3//2]

julia> sqrt(a+b)
[9.636241116594314e-01, 1.2247448713915892e+00] with 53 bits of precision
```