[B] Added Location.to{World,Local}{Axis,}(Vector). Adds BUKKIT-5338

#### The Issue
The Location class currently lacks methods for transforming between coordinate systems easily.

#### Justification for this PR
This PR allows developers to do the affine transformation to and from a local coordinate system that rotates and moves with the reference Location, whereby new Location(*, 0, 0, 0, 0, 0) does no transformation at all.

This implies that:
- Positive y is up
- Positive z (south, i.e. yaw=0) is forward
- Positive x (east, which is left of south) is left
- getDirection() is equivalent to toWorldAxis(new Vector(0,0,1))

This can be used to render effects adjacent to the player or creature and to spawn projectiles in a consistent pattern relative to the player's view.

#### PR Breakdown
The toWorld* methods transform from local coordinates to world coordinates.
The toLocal* methods transform from world coordinates to local coordinates.
The *Axis methods deal with axes instead of positions.

#### Testing Results and Materials
Unit tests are included and should be sufficient to ensure that the new methods are working.

#### Relevant PR(s)
[B-1012] (https://github.com/Bukkit/Bukkit/issues/1012)

#### JIRA Ticket
[BUKKIT-5338] (https://bukkit.atlassian.net/browse/BUKKIT-5338)