default to fast, simple, and correct (per ostringstream) to_string conversions

I propose simply using `snprintf` for converting built in types to strings. The reasons are:

1) This enables us to avoid the mixed usage of lexical_cast and karma, both can be dropped from use in conversions.cpp

2) `snprintf` output can easily be made to match exactly the output of `ostringstream`, which I think is desirable (this patch does this and updates the expected values in the tests). The original reason we switched from `ostringstream` to karma was due to performance in a threaded context (not needing locale based output). But the unintended consequence is odd formatting results (compared to `ostringstream`) using karma and the overhead of trying to fix this.

3) the `snprintf` approach is overall faster than karma as well, especially on os x, though karma on ubuntu might be slightly faster in a threaded context. BTW, if we find we really need more speed, then we should take a look at using http://code.google.com/p/double-conversion/.

4) This fixes existing bug reports where `8.3` becomes `8.30000000001` in text labels, which is a karma bug: #1207

To back up my assertions I've done some benchmarking using `benchmark/run.cpp`. A simple test of conversion of `8.300000000000001` gives these results:

## std::ostringstream
1150 milliseconds (osx)
1430 milliseconds (ubuntu)
threaded -> 8100 milliseconds (ubuntu)
threaded -> 121210 milliseconds (osx)

## karma
1090 milliseconds (osx, boost-trunk)
1340 milliseconds (ubuntu, boost 1.49)
threaded -> 3170 milliseconds (osx boost-trunk)
threaded -> 1740 milliseconds (ubuntu, boost 1.49) **fastest**

## snprintf
820 milliseconds (osx) **fastest**
1040 milliseconds (ubuntu) **fastest**
threaded -> 2410 milliseconds (osx) **fastest**
threaded -> 3060 milliseconds (ubuntu)

Also, with the updated tests all tests pass when using `ostringstream` or the new `sprintf` methods, but these are the failures when karma is enabled (so places where our current karma impl still fails to match `ostreamstring`). Failures are the same for OS X and Ubuntu:

```sh
tests/cpp_tests/conversions_test.cpp(70): test 'out == "0.000123457"' failed in function 'int main(int, char **)': '0.0001234567890123' != '0.000123457'
tests/cpp_tests/conversions_test.cpp(102): test 'out == "1e-11"' failed in function 'int main(int, char **)': '0.9999999999999998e-11' != '1e-11'
tests/cpp_tests/conversions_test.cpp(126): test 'out == "1e+06"' failed in function 'int main(int, char **)': '1000000' != '1e+06'
tests/cpp_tests/conversions_test.cpp(130): test 'out == "1e+07"' failed in function 'int main(int, char **)': '10000000' != '1e+07'
tests/cpp_tests/conversions_test.cpp(134): test 'out == "1e+08"' failed in function 'int main(int, char **)': '100000000' != '1e+08'
tests/cpp_tests/conversions_test.cpp(138): test 'out == "1e+09"' failed in function 'int main(int, char **)': '1000000000' != '1e+09'
tests/cpp_tests/conversions_test.cpp(142): test 'out == "1e+10"' failed in function 'int main(int, char **)': '10000000000' != '1e+10'
tests/cpp_tests/conversions_test.cpp(146): test 'out == "1e+11"' failed in function 'int main(int, char **)': '100000000000' != '1e+11'
tests/cpp_tests/conversions_test.cpp(150): test 'out == "1e+12"' failed in function 'int main(int, char **)': '1000000000000' != '1e+12'
tests/cpp_tests/conversions_test.cpp(154): test 'out == "1e+13"' failed in function 'int main(int, char **)': '10000000000000' != '1e+13'
tests/cpp_tests/conversions_test.cpp(158): test 'out == "1e+14"' failed in function 'int main(int, char **)': '100000000000000' != '1e+14'
tests/cpp_tests/conversions_test.cpp(162): test 'out == "1e+15"' failed in function 'int main(int, char **)': '1000000000000005' != '1e+15'
tests/cpp_tests/conversions_test.cpp(166): test 'out == "-1e+15"' failed in function 'int main(int, char **)': '-1000000000000000' != '-1e+15'
tests/cpp_tests/conversions_test.cpp(170): test 'out == "1e+14"' failed in function 'int main(int, char **)': '100000000000000.1' != '1e+14'
tests/cpp_tests/conversions_test.cpp(178): test 'out == "1.234e+15"' failed in function 'int main(int, char **)': '1234000000000000' != '1.234e+15'
tests/cpp_tests/conversions_test.cpp(194): test 'out == "8.3"' failed in function 'int main(int, char **)': '8.300000000000001' != '8.3'
```