py: Enable struct/binary-helper to parse q and Q sized ints.

Addresses issue #848.
diff --git a/py/mpz.c b/py/mpz.c
index 1862295..0599656 100644
--- a/py/mpz.c
+++ b/py/mpz.c
@@ -589,9 +589,9 @@
     return z;
 }
 
-mpz_t *mpz_from_ll(long long val) {
+mpz_t *mpz_from_ll(long long val, bool is_signed) {
     mpz_t *z = mpz_zero();
-    mpz_set_from_ll(z, val);
+    mpz_set_from_ll(z, val, is_signed);
     return z;
 }
 
@@ -668,11 +668,11 @@
     }
 }
 
-void mpz_set_from_ll(mpz_t *z, long long val) {
+void mpz_set_from_ll(mpz_t *z, long long val, bool is_signed) {
     mpz_need_dig(z, MPZ_NUM_DIG_FOR_LL);
 
     unsigned long long uval;
-    if (val < 0) {
+    if (is_signed && val < 0) {
         z->neg = 1;
         uval = -val;
     } else {