Fixed some bugs, changed input data and added time measurements
Tidied up some classes, simplified the API when needed, and tidied up tests too
Applied further tidying, fixed unit tests, added performance metrics and fixed minor bugs