Animation of precision_vs_zoom
Make it run on motsugo

Motsugo has a fake X11 server, which allegedly supports OpenGL extensions.
But it doesn't quite work and things tend to segfault.

It works for CPU rendering though.
All of the things and none of the sleep

GMPrat is a type that works (un)surprisingly well, until you start changing the view.

ParanoidNumbers explode more dramatically but actually simplify for certain things.

Simplify seems to end up adding operations that don't cancel twice, eg:

debug: TestRandomisedOps (tests/paranoidtester.cpp:152) - Test 1000*1 randomised ops (max digits = 4)
ERROR: TestRandomisedOps (tests/paranoidtester.cpp:208) - {7+(7/10)} *= {119}
ERROR: TestRandomisedOps (tests/paranoidtester.cpp:209) - {7*119+(99127/10)}
ERROR: TestRandomisedOps (tests/paranoidtester.cpp:210) - double Yields: 916.2999773025512695312500000000000000000000
ERROR: TestRandomisedOps (tests/paranoidtester.cpp:211) - PN Yields: 10745.7001953125000000000000000000000000000000
FATAL: int)() (tests/paranoidtester.cpp:212) - Failed on case 102

Note 7*119 * 119 = 99127, so the *119 is being applied extra times
Probably because of reasons that hopefully the cold light of morning will reveal.
Commit before breaking everything

Trying to make ParanoidNumber less shit.
Spends a lot of time in std::vector
Add #define to transform Object bounds on the fly

View model: Object bounds are fixed, transforming view transforms the View bounds,
		Object bounds transformed to coordinates in View bounds before rendering.

Mutable Objects model (?) : Object bounds are transformed by operations, no transformation to View bounds necessary
		The equivelant view bounds are still printed for comparison, but it is effectively (0,0,1,1)

First approach requires one transformation when altering view and then a *lot* during rendering
Second approach requires a lot of transformations when altering view and then <not as many> during rendering

Second approach also means we don't need a dedicated CPU renderer. Coordinates within bounds can be expressed as floats.

ALSO
  - Added cat and panda test images
  - Fixed segfault due to empty paths in cat.svg ... by not including empty paths...
  - ipdf will now run if the window can't be created so I can run it on the bus without X
    - Not much you can actually do without X though...
  - ParanoidNumbers got considerably more #defines for debugging and trying to make them less generally shit
    - Fixed some bugs in PN not revealed by realops tester
    - There are still bugs in PN that aren't revealed by anything
      - Despite it basically being exactly equivelant to doubles at the moment :S
    - Having bugs in basic mathematics operations is actually really really really hard to fix
      - Want to fix all the bugs so I can make PN faster
      - They are slow, they spend about 30% of their time doing std::vector stuff
        - And that's when the std::vector is *empty*

ALSO
  - The new approach to rendering means that the loss of precision is nowhere near as bad
    - This means we need to make new tests to demonstrate that there is in fact still a point to using arbitrary precision
    - Because floats are actually quite amazingly good if you aren't a moron about how you apply operations.
  - Really panicking now

ALSO
  - I'm sure I did something else but I forgot what it was.