Adds the ability to provide a series type with the datasource helper

The series is provided via a lambda which will be called each time a
new series object is required.

Also tidies up various other aspects of the code including:

- renaming some projects
- removing explicit backing variables for properties where they are
unnecessary.