Handle all sub containers.

We weren't handling all sub containers in the 'key' situation. This was
confusing the parser and leading to it emitting the wrong bracket type
for the container. E.g. in this code:

def foo():
    return functools.reduce(operator.and_, [cls.interpret(nodelist[i]) for i in range(1,len(nodelist),2)])
Separate the elements with a space.
Parse the interior containers for the key and value of a dictionary in the same way.
Merge remote-tracking branch 'gwelymernans/master' into gw