Make the LOG function match what the deftransform for LOG does.

Without this, compiled code produces different answers from
interpreted code.

 * src/code/irrat.lisp:
   * Add cases where the base is 2 or 10 to compute the log in the
     same way as the deftransform for LOG does.
 * tests/float.lisp:
   * Fix comparison to use equalp, not equal.
   * Add test for log10.
Add tests for compiled log2 and log10.
Fix type derivation of the exponent for DECODE-FLOAT.

The minimum exponent is from 0, it's from least-positive float.

 * src/compiler/float-tran.lisp:
   * Derive the correct minimum exponent by using the exponent from
     the least-positive float value of the appropriate type.
 * tests/float-tran.lisp:
   * Add tests for the derived exponent type for DECODE-FLOAT.