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 you always have an array instead of an imposter.