Favour constructor injection over setters

To increase immutability, and thereby simplify thread safety, remove
the majority of the setter methods, favouring the use of constructor
injection instead.

Closes #11
Merge branch 'constructor-injection'