Depends on tool, version, etc.
I think only synopsys supports the 2008 version. Other tool support the '93 compatible version (that you will need your own copy of).
Otherwise rounding and saturation is a simple operation.
Round = +0.5 and chop the LSBs off.
Saturate is just some compares and a mux.
Yes, you can write functions to perform the operations. The convenience of fixed_pkg is that is is redefining the arithmetic operators. Altera Quartus has ieee.fixed_pkg supported with VHDL 2008 since version 15.