separate plugins into discrete commands

Separate plugin types by directory and commands by individual scripts. Support for a command is determined by the presence of a script with an appropriate name. Unfortunately, only a prefix can be used, since extensions are necessary on some platforms.
Don't use `is` for value comparisons. That relies on the fact that CPython caches the integers 0-255, which is just an implementation detail. `==` is correct, though actually PEP8 recommends checking for empty containers with `not(matches)`.