DataFrame sorting update

I finally took the time to update DataFrames sorting to match the changes in mainline julia.

`sort!` now looks like

```julia
Base.sort!(df, [alg=<algorithm>,] [by=<transform>,] [lt=<comp>,] [rev=false,]
                [[col=<colname>,] [by=<transform>,] [lt=<comp>,] [rev=false,] ]
     [[cols=(<col1>,<col2>,...),] [by=<transform>,] [lt=<comp>,] [rev=false,] ] ...)
```

`alg`, `by`, `lt`, and `rev` have the same meaning as in Base.  The first instance of each specifies global defaults for sorting.  Successive instances follow names of columns or groups of columns, and apply to the sorting of that column.

`sort` and `sortperm` have identical signatures.

The main work is done by setting up a `DFPerm` `Ordering`, which specifies the correct comparison function in `lt()` for each column.

Comments and suggestions appreciated.

cc: @StefanKarpinski