Addtped

As discussed!
Here, currently, np.take() will be performed even if no `samples` were given and hence all samples are to be output. np.take() always creates a new array to store the output, and so if `samples` is not given, this section will create a complete copy of the genotypes array for no reason. Given that this array may be large if a large region (e.g., whole chrom) has been selected, suggest rearranging the logic a bit so take is only performed if necessary. E.g.:

```python
if samples is None:
    genotypes = calldata['genotype']
else:
    h5_samples = callset['chrom']['samples'][:].tolist()
    inc_samples = [h5_samples.index(s) for s in samples]
    genotypes = np.take(calldata['genotype'], ind_samples, axis=1)
```