Convert all floats to doubles.

Reading suggests that although doubles are larger, they are more
portable. Also in the (contrived) case

float x=<some_value>/3.0;

the value 3.0 is taken as a double so conversion is done.
Variable was of the wrong type.
Move away from using == or != when comparing floats/doubles

Also tidy up setting the half life unit. The scale in the current
order of magnitude is checked twice and calculated both times.
Storing at the start of the condition should be faster as we only
do the maths once.
Fix bugs when writing ground state half life EPS key.
Don't treat the variable as a bool when it's a double.

extractValue function expects an int but string.length()/find()
returns an unsigned int, so we'll cast as int when passing.
Cast return value of .size() as an int.
Lets not pass things around until the functionality to use them exists.

Also we don't need so many warning flags.
Merge branch 'StrictCompilation'

It turns out that, in gcc,-Wall does actually mean 'all'. Using the
flags taken from a discussion on stack overflow seems like over kill,
but I will keep a few of them that appear useful in stopping lazy
coding.

The individual commits will show what was altered to achive
warning-less compliation.

A bug was caught when writing the EPS key for ground-state half life.