Fix IP parsing to be consistent with thrift

Thrift expects IPs to be packable into a signed 32-bit int.  Tryfer
needs to parse IPs into a signed 32-bit int instead of an unsigned int
because struct.pack is strict about packing with integer overflows