brcompat: Move more brcompat implementation into userspace.
Until now, the brcompat kernel module has had to do more of the work of
simulating a bridge than is ideal, because brcompatd was not able to find
out when the vswitchd had finished reloading. It is important that the
bridge reconfiguration be complete by the time that the bridge ioctl
returns, so this had to be done from the kernel.
Now it is possible for brcompatd to wait for the reload to finish (by
using the equivalent of "ovs-appctl -e vswitchd/reload") so this part of
the work can be done in userspace. This commit moves it there.
This commit also moves to userspace some error-checking work, in particular
checking whether a bridge or a port operation is correct. This is
important for an upcoming commit, where brcompatd wishes to send a fake
success return value for an operation that must be ignored. When the error
checking is done in the kernel, it defeats this purpose.