Fix Service.emit and add more Service tests.
Keep Service availability in sync after up-down-up.

Previously, Registries would ignore the second "available" event.
Now, Registries will handle a second "available" appropriately, while
still distinctly from the first, which requires creating a new
Service object rather than simply assigning availability.