Make Software a top level entity

Removes the AgentSoftware and JobSoftware tables and replaces them with
a single "Software" table. This table is referenced in many to many
relations by Job and Agent.
Use DictMixins in Software model

To get to_dict() and to_schema methods
Make Software a top level entity

Removes the AgentSoftware and JobSoftware tables and replaces them with
a single "Software" table. This table is referenced in many to many
relations by Job and Agent.
Use DictMixins in Software model

To get to_dict() and to_schema methods
Merge branch 'software_as_top_level_entity' of github.com:guidow/pyfarm-models into software_as_top_level_entity

Conflicts:
	pyfarm/models/agent.py
Removed accidentally restored AgentSoftware table
Switch DictMixins to UtilityMixins for Software
Make tags a top level entity as well
Fix backref name for jobs in Tag
Fix tests broken by refactoring
Maybe this will fix tests against MySQL
Fix tests on mysql: Import Tag, Software before Job

Importing Tag and Software before we import Job in utcore seems to solve
the problem where mysql cannot create its tables in testing.
Use IDTypeAgent and IDTypeWork Job/Agent refs

When referencing Jobs or Agents from another table, use IDTypeAgent or
IDTypeWork, respectively for that column, to avoid a column type
mismatch.

Hopefully this will finally solve the test errors on Travis against
MySQL
Docstrings for Software/Tag

[ci skip]
Merge pull request #37 from guidow/software_as_top_level_entity

Software as top level entity
fixing merge typo
fixing imports from merge
adding test files
Merge branch 'master' of ../pyfarm-models