Add support for relative vector syntax

* add RelativeVector3f
* add protected method CommandArguments.parseRelativeFloat()
* make CommandArguments.popVector3() support relative syntax

The relative vector syntax is same as in minecraft - if a coordinate is
prefixed with '~', it's treated as relative instead of absolute.
RelativeVector3f is returned, which is a subclass of Vector3f that can
be easily used in place of regular vector (if there's only one reference
point to which the vector is relative), but also allows applying the
relative vector to different reference point, or even converting it to a
4x4 transformation matrix.