ip: fix missed unlocks and waserror handlers

ipifcunbind() could error out from ipifcremlifc() and Medium.unbind()
*after* decrementing ifc->conv->inuse! move the decrement after
calling these functions.

make ipifcremlifc() never raise error but return error string.
the only places where it could error is when it calls into
medium functions like Medium.remroute() and Medium.remmulti().
Ignore these errors as they could happen when the ethernet driver
crashed (think imported ethernet device or usb ethernet
in userspace), so we will be able to unbind.

add waserror() handlers as neccesary to deal with errors from
Medium.addmulti(), Medium.areg() and arpenter() to properly
unlock the data structures.
devenv: prevent non-hostowner from creating or removing variables in '#ec', cleanup
nusb/ptp: do maxpkt reads to avoid babble error with usb 2.0 devices (thanks mischief!)

mischief got babble error with his mobile phone as we used to
read at max 64 bytes for the data response phase. his device
has 512 byte packet size.

thans to mischief for the patience.
import: make aan (-p flag) work in ``backwards mode'' (-B)

in backwards mode, the roles of the aan filters need to be
reversed. add "-n address" option to import to override the
announce address for the aan server part (default tcp!*!0).
spred: command window improvements
nusb/kb: delete code for keyboard boot protocol handling, just use hid parser

unify the keyboard and mouse readers into one using the hid
report parser for both. remove the keyboard protocol handling,
as it is now handled by hid parser and all we get is a sequence
of keycodes in Hiddev.k[] which we diff for up/down and translate
to pc scancodes.
kernel: xinit() use ulong for page counts, cleanup
kernel: fix todfix() race

we have to recheck the condition under tod lock, otherwise
another process can come in and updated tod.last and
tod.off and once we have the lock, we would make time
jump backwards.
Fix acme crash: Get D in a new window with D being an existing directory
kernel: make noswap flag exclude processes from killbig() if not eve, reset noswap flag on exec
5a: revert MOVM .S and .W are exclusive (broke bcm build)
boot: dont print errors if ethernet has no ifstats file, can happen with usb ethernet
pc, pc64: fix off by one error in _multibootentry
ip: fix memory leak in ipicadd6()

allocate the Iplifc structure on the stack instead.
i assuming that it was allocated on heap in fear of
causing stack oveflow. on 386, this adds arround
88 bytes on the stack but it doesnt seem to cause
any trouble. (checked with poolcheck after ctl write)
secstore: improve error messages, newSConn() can't fail
ether8139: fix pointer truncation by ulong cast, use mallocalign()
pc64: enable ether8139 in kernel config (thanks hiro)
ping: don't spin when we get error reading icmp connection, print error and sleep
ipconfig: cleanup code duplication in ip6cfg()
ip: set arp entry for own v6 address when not tentative

after running ip/ipconfig -6, we are unable to ping our
own link-local address and the arp daemon sends out useless
neighbor solicitation requests to itself. this change
adds an arp entry for our ipv6 address. however, this
must not be done for tentative interface configuration.