Refactor how production and trading strategies are linked to agent

Free interpretation of the GoF strategies pattern.
All strategies are separate from the agent and are assigned based on
the occupation of the agent. This, hopefully, makes it easier to add
types or maybe even move these strategies into some kind of DSL that
can be kept in a separate file.
Merge branch 'strategies-refactor'