[Finishes #80169588] Add exact js-numbers support to Blockly

This change converts the basic 'math_number' and 'math_arithmetic' blocks to use the js-numbers (jsnums) lib.  Any inexact types passed to the 'math_arithmetic' block are converted to exact types before being operated on.

Existing levels "just work" because we override the .valueOf() method on exact types.  Whenever an exact type is compared or operated on by non-exact operators it is automatically coerced to an inexact JavaScript Number.

I added some basic codegen.js fixup to strip out `jsnum.ensureExact(...)` and convert `.add` etc. to `+`.  There are still extra parens being generated -- I'll need to investigate if we go this route.

Before: 0.2 + 0.1 -> 0.30000000000000004

![screen shot 2014-10-10 at 4 52 23 pm](https://cloud.githubusercontent.com/assets/413693/4600645/e02ac156-50d8-11e4-9f39-7de6aeabd5aa.png)

After: 0.2 + 0.1 -> 0.3

![screen shot 2014-10-10 at 1 31 33 pm](https://cloud.githubusercontent.com/assets/413693/4600644/de61bbcc-50d8-11e4-8a26-a19c10dfc65f.png)
This looks pretty complex/hard to understand to me. It feels like we should be able to do this more simply, though I could be wrong. At the very least, I think we would want some test coverage if we were going to commit something with this level of complexity. I do kind of like the idea of a separate show code target