Support adding/replacing columns with same-indexed series in BigDeedle

In general, we do not (yet?) support joins on BigDeedle frames and series.
But if the newly added (joined) frame or series has the same index, then
this should work. But - the index might not even support "GetRange" (which
is normally called before testing equality), so we first check if they are
the same object (which is a useful optimization anyway).

In the future, it would make sense to have some mechanism for testing
which operations are supported (so that we do not try calling
"restrict" if it is not supported). But for now, equality test should do.
Allow sorting of an already sorted virtual frame/series (#284)

Currently, the abstraction for virtual source does not provide a mechanism
for sorting things (and this sounds tricky to do), but if the frame/series
is already sorted, we do not need to throw.

Better error reporting (or deciding what is not supported) is still TODO.
Support merging on ordinally indexed virtual frames & series

To implement this, we need to represent ordinal index not as `int64 * int64`
(single range) but as `(int64 * int64) list` (a sequence of non-overlapping
rnages). The commit implements this as the `Ranges` module.

There was also a bug in how missing values were generated in the test suite
for big deedle, so this is fixed (with a few test fixes).
Add forgotten file...
Merge pull request #285 from tpetricek/master

BigDeedle improvements (replacing columns, sorting, merging ordinally indexed)