Add Remote#Ls.

Allow filtering heads by name.

@carlosmn you were right, It was way easier to implement everything in go land.
This implements the main bit of the loop twice. Since we're moving the data to Go anyway, I'd rather see a loop doing the conversion and then we can optionally filter out what we don't want, which should be easier to follow. Since we already have all the data in Go anyway, we can create a second slice if we want filtering, and the difference in performance should be negligible while making it more legible (and less indented).