Use Rest Parameters where it makes sense

Depends on #636

This changes a bunch functions to use rest parameters instead of 'arguments'.

It makes the code simpler to read and ensures we always work with arrays instead of an imposter.