Add support for extended RCODEs and detect bad RCODEs

A too high RCODE previously would have simply corrupted the packet.

Logic put in PackBuffer because Rcode is public and can be changed anytime
Think it makes sense to define an error for this `ErrRcode       error = &Error{err: "bad rcode"}`, so the import errors can be avoided.