Rewrite with clear separation of concerns (closes #2)

I just started working on some documentation for how I envision the pieces of this library to fit together. Most of this is obviously just sketches and fairy tales at the moment, but at least it might give us something to discuss and improve on. I'm hoping that discussions around these documents can help finalize some decisions that are probably easier to make before writing macro-heavy code than after =)
For concistency.

Copying is necessary for higher orders (if we don't want to change the input array already on creation of the interpolation object...), so if we don't copy also for nearest and linear, interpolation objects of different degrees won't behave the same:

```
A = rand(10)
itp1 = Interpolation(A, Linear(OnGrid()), ExtrapError())
itp2 = Interpolation(A, Quadratic(ExtendInner(), OnCell()), ExtrapError())

A[3] = 5.0
```

Now, the coefficients of `itp1` have changed, but not the coefficients of `itp2`...