Sort struct dockeys

Many of the changes seem to abstract away what used to be straightforward statements in the original algorithm, without great benefit. The code above, for example, was:

    if an != bn { return an < bn }

and we can preserve it pretty much as simple:

    if bn > an {
            return 1
    }
    if an < bn {
            return -1
    }

then, we don't need all the sub-functions below either. Instead, we can do:

    if av == bn {
            return 0
    }
    var less bool
    switch an {
    case natureString:
            less = av.(string) < bv.(string)
    ...
    }
    if less {
            return -1
    }
    return 1