It took a while figuring out how to get the encoder working reliably on the arduino, and because of the amount of encoder signal lines (6 in all), I had to switch over to using the arduino mega. Even that is at it's limit for hardware interrupts. After making that work, writing the code was quite simple.
It kinda works. I've tested it on the logic voltages to see if I can get it to work at all, and even though the low voltage means very little force in the motors, it was enough to prove it moved about and always came back to it's zero point. Now I've got to wait until my motor driver ICs arrive (going with L293D as it has some existing tutorials for usage) before starting to write more utility style functions for it including things like "find home" and making it keep the motors synchronised when they're travelling.