Move to modular (Object Orientated) design

This release sees Data Twist functions broken out into modules to allow
easier reading of the code and for people to work on individual parts
in a simpler way.