MEDIUM: buffers: add new pointer wrappers and get rid of almost all buffer_wrap_add calls

buffer_wrap_add was convenient for the migration but is not handy at all.
Let's have new wrappers that report input begin/end and output begin/end
instead.

It looks like we'll also need a b_adv(ofs) to advance a buffer's pointer.
diff --git a/src/buffers.c b/src/buffers.c
index 0352177..40aa57a 100644
--- a/src/buffers.c
+++ b/src/buffers.c
@@ -46,7 +46,7 @@
 	if (!bytes)
 		return 0;
 	if (bytes <= (unsigned long long)buf->i) {
-		buf->p = buffer_wrap_add(buf, buf->p + bytes);
+		buf->p = b_ptr(buf, (unsigned int)bytes);
 		buf->o += bytes;
 		buf->i -= bytes;
 		buf->flags &= ~BF_OUT_EMPTY;
@@ -54,7 +54,7 @@
 	}
 
 	forwarded = buf->i;
-	buf->p = buffer_wrap_add(buf, buf->p + forwarded);
+	buf->p = bi_end(buf);
 	buf->o += forwarded;
 	buf->i = 0;
 
@@ -122,7 +122,7 @@
 
 	memcpy(buf->p, msg, len);
 	buf->o += len;
-	buf->p = buffer_wrap_add(buf, buf->p + len);
+	buf->p = b_ptr(buf, len);
 	buf->total += len;
 
 	buf->flags &= ~(BF_OUT_EMPTY|BF_FULL);
@@ -147,7 +147,7 @@
 	if (buf->flags & BF_FULL)
 		return -1;
 
-	*buffer_wrap_add(buf, buf->p + buf->i) = c;
+	*bi_end(buf) = c;
 
 	buf->i++;
 	if (buffer_len(buf) >= buffer_max_len(buf))
@@ -198,7 +198,7 @@
 
 	/* OK so the data fits in the buffer in one or two blocks */
 	max = buffer_contig_space_with_res(buf, buf->size - max);
-	memcpy(buffer_wrap_add(buf, buf->p + buf->i), blk, MIN(len, max));
+	memcpy(bi_end(buf), blk, MIN(len, max));
 	if (len > max)
 		memcpy(buf->data, blk + max, len - max);
 
@@ -213,7 +213,7 @@
 		}
 		buf->o += fwd;
 		buf->i -= fwd;
-		buf->p = buffer_wrap_add(buf, buf->p + fwd);
+		buf->p = b_ptr(buf, fwd);
 		buf->flags &= ~BF_OUT_EMPTY;
 	}
 
@@ -251,7 +251,7 @@
 		goto out;
 	}
 
-	p = buffer_wrap_sub(buf, buf->p - buf->o);
+	p = bo_ptr(buf);
 
 	if (max > buf->o) {
 		max = buf->o;
@@ -297,14 +297,14 @@
 		return 0;
 	}
 
-	firstblock = buf->data + buf->size - buffer_wrap_sub(buf, buf->p - buf->o);
+	firstblock = buf->data + buf->size - bo_ptr(buf);
 	if (firstblock > offset) {
 		if (firstblock >= len + offset) {
-			memcpy(blk, buffer_wrap_sub(buf, buf->p - buf->o) + offset, len);
+			memcpy(blk, bo_ptr(buf) + offset, len);
 			return len;
 		}
 
-		memcpy(blk, buffer_wrap_sub(buf, buf->p - buf->o) + offset, firstblock - offset);
+		memcpy(blk, bo_ptr(buf) + offset, firstblock - offset);
 		memcpy(blk + firstblock - offset, buf->data, len - firstblock + offset);
 		return len;
 	}
@@ -329,16 +329,16 @@
 
 	delta = len - (end - pos);
 
-	if (delta + buffer_wrap_add(b, b->p + b->i) >= b->data + b->size)
+	if (bi_end(b) + delta >= b->data + b->size)
 		return 0;  /* no space left */
 
 	if (buffer_not_empty(b) &&
-	    delta + buffer_wrap_add(b, b->p + b->i) > buffer_wrap_sub(b, b->p - b->o) &&
-	    buffer_wrap_sub(b, b->p - b->o) >= buffer_wrap_add(b, b->p + b->i))
+	    bi_end(b) + delta > bo_ptr(b) &&
+	    bo_ptr(b) >= bi_end(b))
 		return 0;  /* no space left before wrapping data */
 
 	/* first, protect the end of the buffer */
-	memmove(end + delta, end, buffer_wrap_add(b, b->p + b->i) - end);
+	memmove(end + delta, end, bi_end(b) - end);
 
 	/* now, copy str over pos */
 	if (len)
@@ -371,11 +371,11 @@
 
 	delta = len + 2;
 
-	if (delta + buffer_wrap_add(b, b->p + b->i) >= b->data + b->size)
+	if (bi_end(b) + delta >= b->data + b->size)
 		return 0;  /* no space left */
 
 	/* first, protect the end of the buffer */
-	memmove(pos + delta, pos, buffer_wrap_add(b, b->p + b->i) - pos);
+	memmove(pos + delta, pos, bi_end(b) - pos);
 
 	/* now, copy str over pos */
 	if (len && str) {
@@ -405,7 +405,7 @@
 	int advance, to_move;
 	char *from, *to;
 
-	from = buffer_wrap_sub(buf, buf->p - buf->o);
+	from = bo_ptr(buf);
 	advance = buf->data + buf->size - from;
 	if (!advance)
 		return;
@@ -435,11 +435,11 @@
 			 * empty area is either between buf->r and from or before from or
 			 * after buf->r.
 			 */
-			if (from > buffer_wrap_add(buf, buf->p + buf->i)) {
-				if (to >= buffer_wrap_add(buf, buf->p + buf->i) && to < from)
+			if (from > bi_end(buf)) {
+				if (to >= bi_end(buf) && to < from)
 					break;
-			} else if (from < buffer_wrap_add(buf, buf->p + buf->i)) {
-				if (to < from || to >= buffer_wrap_add(buf, buf->p + buf->i))
+			} else if (from < bi_end(buf)) {
+				if (to < from || to >= bi_end(buf))
 					break;
 			}