Couldn't figure it out previously, but after some digging I found out it's for code reloading so you don't end up with stale features if the code is reloaded.

The most attractive solution I can see right now would be to add a namespace method to Declarable which if used will allow reset to only reset the features under that namespace. If namespaces aren't used reset could just reset everything that isn't namespaced. This solution doesn't break the API and in addition fixes the issue of collisions.

Expect either a new commit on this PR or a new PR if that fits better soon.