Assignment to and from nested tuples (or lists)

This PR fixes #248 and #464.

I've added a number of tests, but please let me know if there are corner cases that I've missed.

Support for nested tuples/list in for-statement is fairly easy now and I have that working too. However, I thought it best to have this reviewed first, since it's already a substantial change.