First changes to eventually replace Name by NamePart.
Modules also use a NamePart as a name, now.
Passing Function tests now.
Now most tests pass and we're able to continue getting rid of parsing.representation.Name.
Temporary parser implementation. Now we're pretty much done with pr.Name.
Remove a lot of the old Name.names usages in favor of a direct NamePart usage.
Resolve some **kwargs issues.
Previously forgot to add the NameParts to used_names. (which had worked before that)
Few import issues.
Introduce get_names_dict to statements to actually fetch the calls out of a statement.

This is going to be the new default method to do dynamic stuff as well as self.foo resolutions for instances.
Add a names_dict to scopes. This is good for the future parser and now useful to process self.foo and other stuff.
Add a LazyDict to be able to use it within FunctionExecution for get_names_dict
Start to change the logic for self.foo variables.
A couple of changes:

- parser.representation now uses ArrayStmt and ExprStatement to be able to differentiate easily with isinstance.
- NameParts are temporarily allowed again as InstanceElements.
And by changing small things about NamePart/InstanceElement usage, we're finally able to pass the class tests again.
Fix issue with descriptors.
The get_code generation of imports was buggy.
Fix an extremely annoying bug that made pickling impossible.
Issues with imports.
Import issues again.