values smaller than 0.001 sat/B can't be represented by CFeeRate, but they are not rejected.

```
./src/bitcoin-cli -named sendtoaddress address=bcrt1qwkmhqum095zau5rf2velq55cq938vrd7uw8m4r amount=1.23 fee_rate=0.0009

error code: -6
error message:
Fee rate (0.000 sat/vB) is lower than the minimum fee rate setting (1.000 sat/vB)
```

```
./src/bitcoin-cli -named sendtoaddress address=bcrt1qwkmhqum095zau5rf2velq55cq938vrd7uw8m4r amount=1.23 fee_rate=0.000000000009

error code: -3
error message:
Invalid amount

BOOST_CHECK(ParseUInt16("00000000000000000000", &n) && n == 0);
    
    BOOST_CHECK(!ParseUInt16("-00000000000000000000", &n));
    BOOST_CHECK(!ParseUInt16("", &n));
    BOOST_CHECK(!ParseUInt16(" 1", &n)); 
    BOOST_CHECK(!ParseUInt16(" -1", &n));
    BOOST_CHECK(!ParseUInt16("++1", &n));
    BOOST_CHECK(!ParseUInt16("+-1", &n));
    BOOST_CHECK(!ParseUInt16("-+1", &n));
    BOOST_CHECK(!ParseUInt16("--1", &n));
    BOOST_CHECK(!ParseUInt16("-1", &n));
    BOOST_CHECK(!ParseUInt16("1 ", &n));
    BOOST_CHECK(!ParseUInt16("1a", &n));
    BOOST_CHECK(!ParseUInt16("aap", &n));
    BOOST_CHECK(!ParseUInt16("0x1", &n)); 
    BOOST_CHECK(!ParseUInt16(STRING_WITH_EMBEDDED_NULL_CHAR, &n));
    
    BOOST_CHECK(!ParseUInt16("-65535", &n));
    BOOST_CHECK(!ParseUInt16("65536", &n));
    BOOST_CHECK(!ParseUInt16("-123", &n));
    BOOST_CHECK(!ParseUInt16("-123", nullptr));
    BOOST_CHECK(!ParseUInt16("65536", nullptr));
}
BOOST_AUTO_TEST_CASE(test_ParseUInt32)
{
    uint32_t n;
    
    BOOST_CHECK(ParseUInt32("1234", nullptr));
    BOOST_CHECK(ParseUInt32("0", &n) && n == 0);
    BOOST_CHECK(ParseUInt32("1234", &n) && n == 1234);