Dataset fixes

There 2 fixes:
* If dataset instance is passed into dataset constructor, it returns this argument. Example (with pretty-print from `Incanter`)
Now:
```Clojure
user=> d1
#clojure.core.matrix.impl.dataset.DataSet{:column-names [:a :b :c], :columns [[1 4] [2 5] [3 6]]}
user=> (dataset d1)
#clojure.core.matrix.impl.dataset.DataSet{:column-names [0 1 2], :columns [[1 4] [2 5] [3 6]]}
```
With PR:
```Clojure
user=> d1
#clojure.core.matrix.impl.dataset.DataSet{:column-names [:a :b :c], :columns [[1 4] [2 5] [3 6]]}

user=> (dataset d1)
#clojure.core.matrix.impl.dataset.DataSet{:column-names [:a :b :c], :columns [[1 4] [2 5] [3 6]]}
```
* Check for rows out of range in `select-rows` happens only if exception is caught.