Added weighted median function and tests

I'm still not sure that's the best solution. `[v wt]` is going to require copying the whole vectors, which may be really big, and then create another sorted copy. It may be better to call `s = sortperm(v)`, and instead of sorting `[v wt]` iterate over `s` in the loop below, accessing `wt[s[below_midpoint_index]]`. This may be slower, not sure, but it may be much better for very large vectors (which is where performance matters for such a function).

`Base.median()` uses `select()` to avoid sorting the whole vector, but I don't know whether there's an equivalent function for `sortperm`.

But the question of efficiently computing the median has probably been discussed many times before. Have you done some research to find this algorithm?