Reordering

Created a library Reordering which is ment to be an alternative for Binary and Continous.
Added the example traveling_salesman.hs to demonstrate how it works.

There is administrative work to do: I couldn't manage to import and export the functions the way I wanted. Thats why the example is in the wrong directory. Sorry, but I am still learning.
remove `error`s; this function doesn't need to be partial

I suppose this is a better definition:

```haskell
import qualified Data.List


multiSplit :: [Int] -> [a] -> [[a]]
multiSplit idxs xs = multiSplitAt (Data.List.sort idxs) xs
  where
    multiSplitAt :: [Int] -> [a] -> [[a]]
    multiSplitAt _  [] = []
    multiSplitAt [] xs = [xs]
    multiSplitAt (i:idxs) xs =
        let (a, b) = splitAt i xs
            idxs' = map (subtract i) idxs
        in  a : multiSplitAt idxs' b
```

It doesn't fail if I pass split locations beyond list bounds (it is just like not making that split at all). It can handle split points given in any order (otherwise only an inner function would suffice). It handles an empty list of splits well (it is just like not making any split at all). Recursion pattern is, in my opinion, also more obvious.