support unsigned uint64 for ultrajson

in general linux distributed system. UUID or GUID is unsigned int64 type. 
I strongly suggest author to merge this request. 
It has been test wildly in my previous project.

I add a new type JT_ULONG to represent unsigned uint64 to the enums JSTYPES and add a function pointer getULongValue to struct _JSONObjectEncoder 

when encoding a Pytheon Number to a C number in function Object_beginTypeContext in objToJson.c , I try twice to see if the number can be  converted to a c unsigned int64(see lines 579 to 592 in file objToJson.c)

it is more difficult to decode a string to an unsigned int64 with arithemtic overflow check. but I find a theory in <<CSAPP>> to do this.
/* Determine whether arguments can be added without overflow */ 
int uadd_ok(unsigned int x, unsigned int y) 
{ 
return !(x+y < x); 
} 

/* Determine whether arguments can be multiplied without overflow */ 
int umul_ok(unsigned int x, unsigned int y) 
{ 
unsigned int p = x * y; 
return !x || p/x==y; 
}