Remove vararg constructors; optimise the others

The vararg constructors were messy, with comma separated lists doing
the same job in a safer and nicer way.  This allows use of the same
prototype for array initialisation instead.