m/pkg/logtree: fix exact backlog fetch, head/tail confusion

This started off as 'hm, the backlog data returned seems wrong'. I
realized we had no test for that, so I added one. It was indeed broken.

This was because we had two simultaneous bugs: we confused head/tail
between docs and different parts of the code, and we forgot to do a
reverse operation when scanning/retrieving journal entries.

With those two fixed, we also implement backlog retrieval in a optimized
fashion, but not scanning/retrieving more entries that is necessary.

Finally, we drive-by fix a massacred ASCII graphic in a comment.

Change-Id: I2ec5dd9b5b58f66fbc015c142feb91bd92038e4f
Reviewed-on: https://review.monogon.dev/c/monogon/+/1430
Tested-by: Jenkins CI
Reviewed-by: Leopold Schabel <leo@monogon.tech>
diff --git a/metropolis/pkg/logtree/journal_test.go b/metropolis/pkg/logtree/journal_test.go
index 1df3f12..e9fc3b4 100644
--- a/metropolis/pkg/logtree/journal_test.go
+++ b/metropolis/pkg/logtree/journal_test.go
@@ -44,7 +44,7 @@
 		j.append(e)
 	}
 
-	entries := j.getEntries("main")
+	entries := j.getEntries(BacklogAllAvailable, "main")
 	if want, got := 8192, len(entries); want != got {
 		t.Fatalf("wanted %d entries, got %d", want, got)
 	}
@@ -73,20 +73,20 @@
 		}
 	}
 
-	entries := j.getEntries("chatty")
+	entries := j.getEntries(BacklogAllAvailable, "chatty")
 	if want, got := 8192, len(entries); want != got {
 		t.Fatalf("wanted %d chatty entries, got %d", want, got)
 	}
-	entries = j.getEntries("solemn")
+	entries = j.getEntries(BacklogAllAvailable, "solemn")
 	if want, got := 900, len(entries); want != got {
 		t.Fatalf("wanted %d solemn entries, got %d", want, got)
 	}
-	entries = j.getEntries("absent")
+	entries = j.getEntries(BacklogAllAvailable, "absent")
 	if want, got := 0, len(entries); want != got {
 		t.Fatalf("wanted %d absent entries, got %d", want, got)
 	}
 
-	entries = j.scanEntries(filterAll())
+	entries = j.scanEntries(BacklogAllAvailable, filterAll())
 	if want, got := 8192+900, len(entries); want != got {
 		t.Fatalf("wanted %d total entries, got %d", want, got)
 	}
@@ -119,7 +119,7 @@
 	j.append(&entry{origin: "e.g", leveled: testPayload("e.g")})
 
 	expect := func(f filter, msgs ...string) string {
-		res := j.scanEntries(f)
+		res := j.scanEntries(BacklogAllAvailable, f)
 		set := make(map[string]bool)
 		for _, entry := range res {
 			set[strings.Join(entry.leveled.messages, "\n")] = true