Make "jump to hunk" behave like the builtin ]c/[c

Instead of using the sign id as the primary piece of data, store
information on a per-hunk granularity.  A hunk has a start/end line as
well as a set of sign ids that have been placed within those lines.

This makes moving to the start of the next/previous hunk, as per the
behavior of the standard `]c`/`[c` bindings, pretty straight forward --
a simple filter to find relevant hunks, and then grab the first sign id.