calculate arrow shaftScale using projection of ends onto shaft offset

I think this fixes the bug described in https://github.com/diagrams/diagrams-lib/commit/56b703fed0e8083874533d3d73494d6540f927bc#commitcomment-4294528.  The output [looks like this](http://bergey.s3.amazonaws.com/diagrams/Arrowtest-fixed.svg)