Added Location.to{World,Local}{Axis,}(Vector).

#### The Issue
The Location class 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-????] (https://github.com/Bukkit/Bukkit/issues/????)

#### JIRA Ticket
[BUKKIT-????] (https://bukkit.atlassian.net/browse/BUKKIT-????)