Implemented GDALFillNodata algorithm as rasterio.fill.fillnodata

This commit implements the GDALFillNodata algorithm from "rasterfill.cpp" as `rasterio.fill.fillnodata`. The function fills in missing data in a raster band using interpolation from the edges, *in place* (is this OK?). The code is largely copied from `_features.pyx`.

https://github.com/OSGeo/gdal/blob/e44182ebe8a2c39108ce4fbb3a583a6dec5bc03e/gdal/alg/rasterfill.cpp#L352

A test has been included providing example usage.
@snorfalorpagus typo: "valud" -> "valued".

Consider rewriting a little to make it more clear, e.g.,:

```
A mask band indicating pixels to be interpolated.  Pixels to interpolate into are indicated by the value 0.  Values of 1 indicate areas to use during interpolation.  Must be same shape as image.
```