Remove generics from manager classes and move them elsewhere

If you need getPlugin() to return a plugin instance, create a new
PluginCommandManager instead
Attack registration of parent aliases to sub commands with aliases

So what this commit does…
- Sub commands can have aliases (yep, this sentence was saturated with
information)
- Sub command aliases are modified to include the parent command AND
(yes and) parent aliases.

In case that was confusing…an example:
- A parent command is registered under “doge”, with an alias of “wow”
- A sub command is then registered as “suchcmd <var>”, with an alias of
“verywow <var>”

So what happens next, you ask?
The sub command is registered as:
- doge suchcmd <var>
- wow suchcmd <var> (parent alias)
- doge verywow <var> (sub alias)
- wow verywow <var> (sub alias)

As you can see, this list can get rather large with multiple aliases on
both the parent and sub command.