bitvec_read_field(): indicate errors using errno

This function returns an *unsigned* integer (uint64_t), so returning
a negative value on error is a bad idea.  A negative value turns into
a huge positive value, what was demonstrated in the bitvec_test:

  bitvec_read_field(idx=512, len=16) => ffffffffffffffea
  bitvec_read_field(idx=0, len=65) => ffffffffffffffea
  bitvec_read_field(idx=64, len=16) => ffffffffffffffea

The 0xffffffffffffffea above is basically:

  (uint64_t) -EINVAL, or
  (uint64_t) -22 + 1, or
  0xffffffffffffffff - 0x16 + 1.

Let's make use of the errno in order to indicate an error to the caller.

Change-Id: I2cc734caa3365d03c2ae2b3f2cd9544933c25e9e
Related: OS#4388
diff --git a/tests/bitvec/bitvec_test.c b/tests/bitvec/bitvec_test.c
index b4764e6..ea7ea9a 100644
--- a/tests/bitvec/bitvec_test.c
+++ b/tests/bitvec/bitvec_test.c
@@ -237,7 +237,8 @@
 #define _bitvec_read_field(idx, len) \
 	readIndex = idx; \
 	field = bitvec_read_field(&bv, &readIndex, len); \
-	printf("bitvec_read_field(idx=%u, len=%u) => %" PRIx64 "\n", idx, len, field);
+	printf("bitvec_read_field(idx=%u, len=%u) => %" PRIx64 " (%s)\n", \
+	       idx, len, field, errno == 0 ? "success" : "error");
 
 	_bitvec_read_field(0, 64);
 	_bitvec_read_field(0, 32);