Extended library to handle multi-dimensional input and output

There are now plenty of additional encode and decode methods that can be configured to use 1 to n-dimensional input. Precision (or factor) are also configurable and there is also a legacy code path for supporting the old API and make it backwards compatible.

Purpose of this is to encode simple integer lists or three-dimensional data with the same algorithms too. This is not supported by the original Google library, but both OpenLayers libraries support this too.