Added support for spread/rest operator

Closes GH-979.
Closes GH-953.
Closes GH-954.