How can I group a list of tags into ranges of first letters (A–E, F–J, etc.)?
You can do this with the twigPCRE filter. Once you have your allTags, group them like this:

{% set allTagsGrouped = allTags|group('name|first|upper|preg_replace("/[A-M]/", "A-M", 1)|preg_replace("/[N-Z]/", "N-Z", 1)') %}


This takes the tag name, gets the first character, converts it to uppercase (so 'a' and 'A' are grouped together), and then maps all characters in the range A-M to the string "A-M", and all characters in the range N-Z to the string "N-Z". So allTagsGrouped will have two keys: "A-M", and "N-Z" (assuming all tag names start with letters). Obviously you could use more ranges.

Ordering allTags by name appears to be a case insensitive sort, so allTagsGrouped should still be in the right order.