Represents a value that can be joined to. Any column that a user
joins to must be "owned" by an entity that implements this interface.
The system maps columns to joinables to be able to decompose oids and
field values into individual join values on a per-column basis. This
allows us to support joins to only some of the columns of a mapping, and
to be loose with the ordering of foreign key columns relative to the
ordering of the joined-to columns. Having a separate interface for
joinables also allows us to perform tricks such as a vertically-mapped
application identity subclass transparently transforming columns of its
foreign key to the corresponding primary key fields in the base class.