Add DataSetViews for general OpenANN::DataSets&

This pull request contains an implementation and some test cases for DataSetViews operating on any OpenANN::DataSets&. 

DataSetViews are index-based instance representation are very helpful for validation methods, that  e.g. needs to split and merge DirectStorageDatases.

With this implementation you can manipulate any dataset without a complete, expensive
matrix- or vector copying.