UniValue: fix major bug, add unit tests

All numbers were broken, due to lack of an underscore.  No wonder my all-tree conversion to UniValue was failing its tests.

It seems most of these checks assume pretty sane input. It'd be nice to see some exotic and/or blatantly wrong set's here, in order to test that they work or fail as anticipated.
for ex: 
setInt(INT_MAX+1LL);
setNumStr("-2147483647")
setNumStr("1.1");
setStr("2") && isStr()/isNum()
etc.

For those, I really don't know what the expected results would be, so I suppose it'd serve as some poor-man's documentation as well.