Pointer comparators and difference match the C standard.

Fixed two issues with pointer operations.
C11 6.5.6.9: Ptr subtraction have type ptrdiff_t.
C11 6.5.8.6, 6.5.9.3: Ptr comparisons have type int.
Maybe we should move at the end of ptr_compare?