Fix signed-unsigned mismatch warnings in the new item value code.

Unsigned comparison allows catching negatives in the same check too.
Also, it didn't check the values in getValue.
Make using new for allocating DF objects with vtables a compile-time error.

When done from plugins, it doesn't correctly initialize the vtable
because of some weird things MSVC does, so the only safe way is to
use df::allocate<df::foo>(). For consistency, it is also enforced
for code in the main library. It reveals the issue in the digging
invaders plugin, first found by warmist.

This change is linked to a modification in df-structures codegen.