Add project operator to new Java API

Adds a project operator to the new Java API (Issue #566)
Project works only on Tuple datasets and is used like:

```
DataSet<Tuple3<Integer, Double, String>> ds = ...
DataSet<Tuple2<String,Integer>> pds = ds.project(2,0).types(String.class, Integer.class);
DataSet<Tuple1<Double>> pds2 = ds.project("FTF").types(Double.class);
DataSet<Tuple2<Integer, String>> pds3 = ds.project(true, false, true).types(Integer.class, String.class);
```

Also added unit tests and integration tests for the project operator.