Cleanup hyperlink code and APIify

More work could be done to simplify the `detector` strategy pattern, but that's now confined to the internal classes, so can be simplified any time.
Region takes offset + length.

```java
	public Region(int offset, int length) {
		fOffset= offset;
		fLength= length;
	}
```