WKT lexer

As I found myself some spare time and enthusiasm, I tried to write a lexer to replace the regex-based parsing of WKT strings (see also #2172). Here is the result. Please let me know whether this is anywhere near the concepts that have been conceived.
I know this is how the GeoJSON format (and others) are written, but it strikes me that we would get smaller compiled output if instead we used the `ol.geom.GeometryType` enum.  I imagine this means it couldn't be `@const`, but I'm not sure we get much benefit from that.  So something like:
```js
/**
 * @type {Object.<string, function(ol.geom.Geometry): string>}
 */
ol.format.WKT.GeometryEncoder_ = {};
ol.format.WKT.GeometryEncoder[ol.geom.GeometryType.POINT] = ol.format.WKT.encodePointGeometry_;
// ... etc.
```

Ugly to write.  But perhaps smaller in the end.