added sorting function + protocol + default implementation + tests

sorts all slices of any multi dimensional array.

```clojure
(deftest test-sort-array
 (is (= [1 2 3 4 5 6 7 8] (sort-array [1 3 5 7 2 4 6 8])))
 (is (= [1 2 3 4 5 6 7 8] (sort-array [1 2 3 4 5 6 7 8])))
 (is (= [1 2 3 4 5 6 7 8] (sort-array [8 7 6 5 4 3 2 1])))
 (is (= [1 2 3 4 5 6 7 8] (sort-array [1 3 5 7 2 4 6 8] 'asc)))
 (is (= [8 7 6 5 4 3 2 1] (sort-array [1 3 5 7 2 4 6 8] 'desc)))
 (is (= [8 7 6 5 4 3 2 1] (sort-array [1 2 3 4 5 6 7 8] 'desc)))
 (is (= [8 7 6 5 4 3 2 1] (sort-array [8 7 6 5 4 3 2 1] 'desc)))
 (is (= [[8 7 6 5] [4 3 2 1]] (sort-array [[8 5 7 6] [1 2 3 4]] 'desc))))
```