Refactor to define and use Path

@keflavich @ChrisBeaumont - this is a start at the next refactoring based on discussions with @ChrisBeaumont. It needs to be rebased once #5 and #6 are merged.

Usage example:

```
from astropy.io import fits

from pvextractor import pv_slice
from pvextractor.geometry.paths import Path

x = [50., 0.]
y = [50., 0.]

p = Path(x, y)

data = fits.open('L1448_13CO.fits')[0].data

slice = pv_slice(data, p)

fits.writeto('slice.fits', slice, clobber=True)

slice = pv_slice(data, p, interpolation='nearest')

fits.writeto('slice_near.fits', slice, clobber=True)

p.width = 5
thick_slice = pv_slice(data, p)

fits.writeto('slice_thick.fits', thick_slice, clobber=True)
```