Assignment to and from nested tuples (or lists)

This PR fixes #248 and #464.

I have tried to stay close to the error messages given my Python.

I've added a number of tests, but please let me know if there are corner cases that I've missed.

I extended the syntax for type annotations to allow nested tuples, like `type: int, (int, str)`. A tuple with only a single value can be made with a trailing comma, like in the Python syntax.

As an example of what can be handled now:

```python
t = 42, ('Douglas', 'Adams')  # type: int, (str, str)

a, (b, (c, d)) = 3.14, t

a, b = t[1]  # 5
c, d = 4 # 6
x, y, z = t # 7
```
mypy output:
```
example.py, line 5: Incompatible types in assignment (expression has type "str", variable has type "float")
example.py, line 5: Incompatible types in assignment (expression has type "str", variable has type "int")
example.py, line 6: 'builtins.int' object is not iterable
example.py, line 7: Need more than 2 values to unpack (3 expected)
```

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 PR (only assignments to nested tuples) reviewed first, since it's already a substantial change.
This seems very similar to the previous one, and the name is identical. Maybe rename or remove?