Implement Format80 RLE compression

Makes the SHP writer a little smarter and the files produced a lot smaller.

This doesn't use all the encodings available but it's probably enough to close #5295.
Something like the following would make the purpose of this a bit clearer:
```csharp
var count = 1;
while (count < maxCount && src[offset++] == first)
		count++;
```