changed face.neighboring_regions_ to std::vector

for being conceptually dubious.
How does a three-way border between three regions
   work? Right now I feel like it makes the most sense
   for it to be two faces that are marked as neighbors
   (not in the current sense because neighbors are
   required to provide the boundaries of this face,
   but as an extra case), and that'll mean that a
   face can be incident to arbitrarily many regions.
renamed ambiguous function
fixed trivial mistake
Implemented (compiles, didn't test) queueing events

Should be complete except that I haven't actually
   implemented restricting collisions to the actual
   bounds of the faces/edges (right now using the full
   planes/lines)
fixed leaving out a time summand
implemented (didn't test) actually inserting events

It overflows immediately if you try to run it
Implemented (compiles, didn't test) checks for...

...whether the "collisions" between vertices/lines/
   /planes actually are correct (within the face/
   /segment) or only true when the planes/edges
   are extended to infinity.

These checks currently allow rounding error that will
   screw things up. They're a prototype.
Attempted to hackily use GMP. Failed.
Merge branch 'master' of https://github.com/elidupree/Lasercake
fix compile (for me at least) of grand_structure with GMP mpz