introduce ExpandedNodeID struct

This is only a draft. Please comment.
The only difference between nodeId and extendednodeid is serialization where nodeid never write namespace uri and server.
might me missing som operators but it compiles and runs fine
Looks like a hack. :)

I have found very intresting xml file Opc.Ua.Types.bsd - there are really strict dividing between NodeID and ExpandedNodeID. 
ExpandedNodeID may refer to remote server, but this token specified ad NodeID. This mean that token may only local. :)

We need generate all types! :)

ReadValueID is required also NodeID instead of ExpandedNodeID - this may be cause of the problem.
Did you run unittests? 
And do all our supported clients work with these changes? What if we commit this change but next step is generating all sraff then this code will gone...
I really don't like inheritance here. It is better to aggregate node id here and remove namespace uri from node id..