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.
I understand, but why here and not where sorted is needed?
On Jul 2, 2014 7:03 PM, "josenavas" <notifications@github.com> wrote:

> In qiita_db/job.py:
>
> > @@ -197,6 +203,26 @@ def options(self):
> >              opts[k] = join_f("%s_%s_%s" % (self._id, db_comm[0], k.strip("-")))
> >          return opts
> >
> > +    @options.setter
> > +    def options(self, opts):
> > +        """ Sets the options for the job
> > +
> > +        Parameters
> > +        ----------
> > +        opts: dict
> > +            The options for the command in format {option: value}
> > +        """
> > +        # make sure job is editable
> > +        self._lock_job()
> > +
> > +        conn_handler = SQLConnectionHandler()
> > +        # JSON the options dictionary
> > +        opts_json = dumps(opts, sort_keys=True, separators=(',', ':'))
>
> @wasade <https://github.com/wasade> agree that databases are unordered.
> Note that what we are sorting here is the actual string representation of
> the option. That is, the database will receive only the string. The main
> reason of sorting them is that we can then perform an exact match of the
> string, without decoding the json into memory and performing the comparison.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/biocore/qiita/pull/184/files#r14493034>.
>