feed de-duplication

prevents problems, especially on rebind, where if the same feed is added multiple times, we get multiple running instances.
works primarily by using unique tags which are now inferred for feeds.
these can be explicitly set, if the default de-dupe behaviour is not right,
but in most cases it will be right, using a combo of the source and the sensor it writes to.
(since most sensors will only be written to by one source this is more than enough!)
also adds lots of equals and hashcodes, as this is used secondarily when there is no unique tag
(but now there always is so much of this is not needed)