add assertion for cast double->float

ScoreFunction scoring might result in under or overflow, for example if a user
decides to use the timestamp as a boost in the script scorer. Therefore, check
if cast causes a huge precision loss. Note that this does not always detect
casting issues. For example in
ScriptFunction.score()
the function
SearchScript.runAsDouble()
is called. AbstractFloatSearchScript implements it as follows:
@Override     public double runAsDouble() {         return runAsFloat();     }
In this case the cast happens before the assertion and therfore precision
lossor over/underflows cannot be detected by the assertion.