Rewrite the receive filter handling code and cleanup the ioctl bits.
Rewrite the receive filter handling code and cleanup the ioctl bits.

Fixes a bug when going in and out of promiscuous mode results in the
driver not disabling all multicast mode.

Tested by kili@ jasper@

orumin/openbsd-efivars,orumin/openbsd-efivars,orumin/openbsd-efivars,orumin/openbsd-efivars