Remove hardcode commands

This now dynamically populates the commands available for each data type in qiita_pet.

It also adds functionality to the Command object to pull out a dictionary of commands keyed to the datatype they are for.
Yeah, it's a weird tradeoff between this and the above where you have two lists explicitly. I can do the zip in the `if datatypes is None` section, which should be cleaner.