Add unit test for flatfile

also, made flatfile read matrices saved from matlab
Added functionality to combine or filter datasets

This functionality was required for the study/reference
framework in the case where study and reference are in
different files.

Also added this new framework for sites:
Site <- AbstractSite -> GlobalSite

Basically, a Site has to be associated with a particular
dataset and it knows its own index in that dataset.
A GlobalSite does not have an index and it is sort of
a token that represents the site accross all datasets.
Something like this is required for filtering and
combining datasets. They both inherit from AbstractSite
so that all code relating to sites that doesn't care
about the site index can be shared there.

Also made FlatFiles load/save .sites and .samples files
if they are there. If they are not there, no worries.