Implement XML parser that doesn't load the entire file (is blocking)

- Use iterative loader from the xml library
- Handle nodes as they are being parsed by the xml library
- Colours ways randomly in the output image so it is easier to distinguish them
- Converts numbers to python literals when parsing tags
Add seperate class for exporting partially parsed XML to an image as a map

- Allow to set different colours, including random colours
- Needs access to some of the variables in a parser (related to nodes and ways)
Remove a lot of duplicate code
Use array instead of list to conserve some memory (it is not much though)
Use weakref so we don't keep memory consuming stuff alive accidentally in the image exporter
Use a more prefered method of checking a string's ending
Add reverse relations between nodes and ways.

- If a node is referenced by a way then the ID of that way is added to a list on the node
- Reference lists are now 64bit unsigned integers to move in line with OSM spec (memory savings might be negligible now)
Add an incorrectly named incremental graph builder

- Graph builder uses reverse references to build the graph
- Graph is more complete than XMLToGraph