Allow specification of the order_column to remove need for a primary key

This a squashed and rebased version of soundcloud/lhm#49, since @airhorns seems unreachable.
There were a few conflicts, which I've resolved. It'd be great if we can get this looked at again!

---

Instead of relying on a table to have a primary key, we now accept the
order_column option and put that everywhere. This kind of uncomfortable
state about the migration now needs to be given to everyone and I think
an appropriate place is the migration, since most objects in the system
have access to it and they all need to agree on the value. This required
passing the options down a couple more objects for the Migrator creating
the Migration to have access, but I think thats acceptable for this
increase in functionality.