webadmin,userportal: Support column sorting

This patch introduces support for both server-side
and client-side sorting of UI table columns.

Similar to column resize feature, column sorting
must be enabled per-column for the given table.

SortableColumn provides API to enable both kinds
of sorting (this patch makes TextColumnWithTooltip
extend SortableColumn, we might want to do this
for more custom column types if necessary):

  // Enables server-side sorting via search query
  // ... SORTBY name ASC|DESC
  column.makeSortable('name');

  // Enables client-side sorting using comparator
  column.makeSortable(comparator);

In order for server-side sorting to work properly,
corresponding SearchableListModel must apply the
search options while executing "Search" query.

For example, in DataCenterListModel:

  @Override
  public boolean supportsServerSideSorting() {
    return true;
  }

  @Override
  protected void syncSearch() {
    String search;
    // search = getSearchString();
    search = applySortOptions(getSearchString());
    ...
  }

If a model doesn't support server-side sorting,
client-side sorting will be used as fall back.

It is the responsibility of UI developers to
ensure that columns marked as sortable are in
sync with sorting capability of the given model,
i.e. if the model doesn't support server-side
sorting, comparator must be used.

Change-Id: I141ea068fe90409852d34bea6fedb45d0d8a07ae
Signed-off-by: Vojtech Szocs <vszocs@redhat.com>