Fix a segfault when node ram cache is set to 0
Round results rather than truncate the in the DOUBLE_TO_FIX macro

As ram nodes go through a double conversion, results differed depending
on if they were stored in ram cache in the database.

Also adapt the tests, as they the rounding changes changed the sizes of many
of the polygons by a tiny amount.
Add some basic tag counting to check things don't change

The number of tags set in the tests are not derived normatively.
Instead they assume the current implementation is correct and therefore
mostly guards agains undetected changes in the tag processing.