Added bothSize function, lineHead and lineTail

I think this is ready to merge but there are two caveats.

- Setting `arrowHead` and `arrowTail` after using `bothSize` instead of before might give unintuitive results.

- `bothSize` is still asymmetric since we use the arrowhead to calculate the width for both the head and tail. The only ways around it would be 1) to specify the width instead of the size, which is inconsistent with the rest of the API. Or 2) to provide 2 functions `bothSizeHead` and `bothSizeTail` such that `bothSizeHead` is the current `bothSize` and `bothSizeTail` bases the width on the arrow tail, which I think is unnecessarily complicated.