Support complex polygon in Geofence initialization

It's not computing the tile hashes properly yet, but the constructor now
accepts inner rings in its initialization.

Also a couple of random style cleanups, such as not `returning this`
from the constructor, whose return value is ignored.