Added an introduction to the Sphinx generated documentation
A rather large commit. This is a first attempt at doing expression
reduction. This has involved implementing some arithmetic for the
expression classes. I'm not sure that this is really the best way to do
this, it might be easier to simply have 'reduce' as a method on the
Expression classes.

Additionally there are two strategies here. One is to implement get_value
in terms of 'reduce' and the other is to implement 'reduce' in terms of
get_value. We wish to do one or the other since otherwise there is quite a
large duplication of very similar code. I think it is best to implement
get_value in terms of reduce. The disadvantage is that the error message
might not be so helpful.

A further possibility is a generic, reduce method which is parameterised
with what to do when something cannot be reduced to a number.

Finally, I have also fixed the parser because testing for this feature
uncovered a bug in the parser that chained binary operators, although
parsed were not then converted correctly, so that we only convered the
first two elements, so 1 + 2 + 3, became simply 1 + 2.
Fixes for make lint, and additionally I forgot to uncomment a check on the apply expressions arguments. Fixing this means that I *now* have failing tests and so I have not yet done my expression reduction stuff.
Now passing all tests. Still not convinced by my own implementation of reducing expressions. I need to have a think about this.