Fixed deep copy bug and updated test suite

Feldspar compiler used to implement a copy on a struct (tuple) type using a simple assignment, but that is incorrect if the struct contains an array, which should be deep copied using copyArray(). This pull request fixes that issue by recursively generating copying code for the members.