Added debug information about ship's position, changed starting rotation to Math.PI / 2 in all axes in a misguided attempt to compensate for the erroneous equations.
Updated velocity calculations (still broken)
All's well that ends well!  Turns out THREE.js has handy functions for translating along the local X, Y and Z axes and I didn't need to muck about with quaternions or anything like that.
Insanity is but a breath away...