Fix command impersonation

In a previous commit, I rejigged the way commands were overloaded,
and added what appeared to be a micro-optimisation to prevent
the thread from being imperonsated twice. Ultimately it wouldn't
make any differnce, so why I put it in there I really don't know.

The optimisation actually resulted in a breakage in the case where
base commands weren't present but extension commands were. As a
result all extended commands didn't get impersonated unless they
were overloading. This is not a good thing at all.

This fix removed that total stupidity and restores some level of
sanity.

Apologies for my idiocy.
Land #67, command impersonation fix
Merge branch 'upstream/master' into incognito_pointer_truncation_fix