Support values between [0, 2^64 - 1]

The current numeric parser behavior will not allow a value of 2^63 because it assumes that all integers will be signed.  This change promotes non-negative numeric values with the most significant bit set to an `unsigned long long` type.

Example of the fix in practice:

```python
>>> import ujson
>>> ujson.loads('{"id": %d}' % 2**63)
{u'id': 9223372036854775808L}
>>> ujson.loads('{"id": %s}' % 0xFFFFFFFFFFFFFFFFL)
{u'id': 18446744073709551615L}
>>> ujson.loads('{"id": %d}' % 2**64)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Value is too big!
>>>
```