func_scope and class_scope are also used as symbol

I've thought this implementation ever, but it is reasonable in terms of
simpler implementation.  If symbol and scope are separated, pointer from
symbol to scope should be there and it occurs mutual reference.
refactorings; noexcept, including proper header

no constructor should raise an exception