BUG: Use unsigned ints for peak finding

When `locate()` is given a float image, it casts it to integers for more efficient peak-finding. (`refine()` is still done with the float image.) As currently written, float images are cast to signed 8-bit integers (max. value 127). This seems like a needless loss of precision that could actually have a performance cost, as it may increase the need for tie-breaking in the merging step. This PR uses unsigned 8-bit ints instead.