Re-write operator selection to allow custom definitions

Instead of the originally proposed column-type-based operator
selection, I'd rather make it possible to register any operator,
and let SQLAlchemy throw when an operator doesn't make sense for a
column type.  This way I don't have as much duplicate code when using
my own column types - none if that column uses the standard set of
operators.