Add method to return the cannonical order by list

Wrapper for the order_by_columns property.

Returns a list whether the property contains undef, a 0-length list, or a
populated list.
resolve_order_by_clause() now takes the query plan as its only arg
Refactor order_by clause generation

UR::DataSource::RDBMS handles figuring out which are ascending/descending,
and calls a new method _resolve_order_by_clause_for_column() for each column.
RDBMS subclasses can override the default behavior of just tacking on "DESC"
for descending sorts.
Refactor how order_by columns are managed

the query plan now handles which columns should be sorted descending, and also
takes care of removing the '-' from the front of descending column names in the
raw list of order by columns.
add method to get the table and column name for a column like table_name.column_name
Fallback for classes with non-RDBMS data sources
avoid an uninitialized value warning
UR::Object::Type::property_for_column() now supports an argument like table_name.column_name
add method to tell if a property is a text type
PostgreSQL now uses the "C" collation for ordering on text fields to match how UR sorts using cmp
We only need to be testing for a - in order by column lists

The +s are filtered out when the QueryPlan is created inside
_determine_complete_order_by_list()
Revert portion of 162dc

The named commit changes the return behavior if there's no property
with that column_name.
Merge pull request #3 from amb43790/postgres_collation

Postgres collation