Add a context manager allowing reads to a new destination type

New context manager available at "Dataset.astype" which allows reading to a new destination type, simplifying type conversion:

```
with dataset.astype("f8'):
    doubles = dataset[:]
```