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 Please consider adding a bit more description to this from the GDAL docs describing the algorithm (and suggested uses or uses to avoid).