Create a new `__capacity_aware_iterator` iterator type which wraps an existing iterator, takes its container as a template parameter, and encodes the maximum amount of elements the container can hold. The main objective is to prevent iterator mixups between different containers (e.g. `vector`).