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 If ```smoothing_iterations``` is retained, please add a little more detail to this description to indicate what smoothing applies to: interpolated pixels, or full image.