The latest draft addresses all my comments. I don't feel strongly about the "must not require the provision of both" issue, so I'll let that go unless someone else speaks up.
One last thing: in alist->bag and alist->bag!, what happens if the same element appears multiple times, with different counts, in the alist? Or is that implicitly disallowed by the definition of what an alist is?