Refactor Software, separate tables for versions, SoftwareRequirements

This changes the software models as discussed on the mailing lists

There's a few parts in the admin interface that still don't work with these changes, but most parts work and the tests all pass.