Generic round

One may have some things in the db which are different numeric type than int and round still makes sense. Think of BigDecimal for example.

On the other hand the round is handled in the code currently differently than floor, ceil, etc. Is there a reason for that? Am I missing something? If not we should treat round the same way. And that is this patch.