This change implements identification of unsupported instructions and improves errors reporting.
Before this change assembler was unable to identify unsupported instructions reliably.
In many cases this resulted in an "invalid operand" message instead of an "unsupported opcode".
Partially fixes bug 42590.