cleanup packed lists
Various things affecting PackedList and PackedBoolList
- PackedBoolList is a class built on PackedList with additional features, but could be streamlined/reduces with some refactoring.
- iterator access in general is/was a questionable design feature. It is normally needed, and adds a layer of complexity. However, being able to quickly find and access the indices of bits set (for PackedBoolList) would be more useful - we otherwise spend loads of times indexing through zeroes and have numerous bit-ops on the way (losing the inherent parallelism for Bool).
- propagate into reduction operations.