This patch does the following
- ASSERT can be defined outside SECTIONS block
- In case there is no SECTIONS block, section names can still be used in ASSERT and symbol assignment expressions
- All command objects are stored and processed in a single place (createAssignments was removed)