Type names

This pull request is broken up into multiple commits. It will be easier to understand by looking at each commit rather than the full diff. This is on top of the groupAll pull request.

The type names explain themselves better now. What is often forgotten by library writers is that their types end up showing up in error messages to users. While it is possible that type names that are too long can get overwhelming, I would rather err on the side of that happening and the names be inherently understandable. If we came up with a shorter name than `container` that would help the most to make things more concise.