Add lest test framework
Fix several errors

Fixes where value is 0.0 in:
- degree_of()
- precision()
- step_engineering_string()
Use lest test framework and allow for testing of C versions of functions

- Use lest test framework; Note: first failure ends test case
- Expand tests
- Add compilation control -DTEST_C_VERSION_BY_DH
- Failing tests (g++ 4.8.1):
. line.146 formats as '-1000.000e-27'
. line.159 formats as '100.0 z'
. line.169 formats as '0.00'
. line.169 formats as '0.00e0'

test_eng_format.cpp:146: failed: extreme converts well to string: "-1.00000 y" == to_string( to_engineering_string( -999.9999e-27, 6, eng_prefixed ) )
test_eng_format.cpp:159: failed: value rounds properly to string: "100 z" == to_string( to_engineering_string( 99.951e-21, 3, eng_prefixed ) )
test_eng_format.cpp:169: failed: bad floating point number converts accordingly to string: "NaN" == to_string( to_engineering_string( strtod("NaN", __null), 3, eng_prefixed ) )
test_eng_format.cpp:171: failed: bad floating point number converts accordingly to string: "INFINITE" == to_string( to_engineering_string( strtod("INFINITY", __null), 3, eng_exponential ) )
2 out of 30 tests failed.
Add lest test framework (lest.hpp)