Massive overhaul of the classes

- Agent implementations now have all the benefits of the ABM.Agent base class. This is done by creating an agent with the provided create method and then adding all the new instance methods with a mixin
- Also improved RoadNode placement