Analyser now has both dynamic and static methods.
Made the constructor take exactly the class data requirements, and the
static initialiser compute them from user inputs.