blockmanager: Avoid duplicate header announcements.
blockmanager: Avoid duplicate header announcements.

Clients are able to choose between two modes of notification about new
blocks via the wire protocol.  The first, and current default, is via
inv messages and the second is via direct header announcements.

There is code in the peer package which deals with filtering duplicate
inventory announcements via the QueueInventory message.  This works as
expected for inv-based announcements, however, direct header
announcements are not inv messages and hence do not use that code path.

Consequently, the recent addition of the fast relay path which relied on
that filtering to avoid sending duplicate announcements resulted in
duplicate announcements being sent to peers who requested the header
announcements mode.

This resolves the issue by adding some logic directly to the
notifications themselves to deal with filtering duplicates, both for inv
and header-based announcements.

decred/dcrd,jrick/dcrd,decred/dcrd,jrick/dcrd