Minor Changes to Offsetable

Basically, I just made it explicitly export things.
I also added a with_offset function that I've realized I can't use.
Good.
Updated Zone Coding Style

I rewrote it to be like my current Haskell code.
Made Betweenable's Exports Explicit
Reworked Divisible

I'm not sure I've done the right thing here.
I think I've made it more complicated somehow...

Anyway, the main upshot is that Divisible only has divide_into_upper and
divide_into_lower.

Then, I've included a bunch of different constructors for building
Divisible instances more easily.

I've got ones you can use verbatim for fractional and integral values.
Then I've got ones that build the upper and lowers out of a generator,
so long as they're in Num.

The generator does what divide_into used to do, which was return the
sizes of the blocks.
Then the above code can take those and derive the block edges.

Those all assume 1D, though.

If none of them work, you can write your own still.
Fully Implemented PkTree

So, I've got some implementation for everything.
There's been very little testing so far...

find_nearest is kind of a mess.
Like, the code that's there isn't terrible, there are just a lot of
different cases that need to be handled.

I think there's more logic in find_nearest than in the entire building
and maintaining of the tree.

So, perhaps I'll revisit it later and see a really clear way to handle
it.

The tree implementation itself was ugly until this most recent rewrite,
for example, so iteration does happen.