add free and bound identifier sets

Still need to add docs, but wanted to see if anyone had feedback.

I will squash when done.
Yes that would be better. I think just `dict-keys` would be even simpler.