WIP: basic floating point exception functionality

This adds basic functionality for checking and clearing floating point exception flags (#2976). Usage is currently:
```
using Base.Rounding
get_floatexcept()
is_floatexcept(FEUnderflow)
```

Still to do:
- [ ] Settle on a consistent interface
- [ ] Incorporate `BigFloat` flags
- [ ] A way to raise and restore flags
- [ ] At the moment, almost every operation seems to flag `FEInexact` (input, printing, etc.), even for exact numbers (e.g. `x=1.0`): I'm not sure what the correct behaviour is here.

cc: @andrioni