compiler/libec: (#18, #26, #439, #685) Fixed serious performance issues and warnings ('declared inside parameter list')
- Proper identification of dependencies between C external declarations (edges of the graph)
- Implementation of a Topological Sort with support for breaking edges with forward declaration
- Algorithm based on description and pseudo code from en.wikipedia.org/wiki/Topological_sorting (first described by Kahn, 1962)
- (#18) Since we no longer have spurious warnings from bad generated C code, it is no longer necessary to perform any kind of filtering and parallel builds will show all warnings
- Removed precompiled rules and source files as the grammar files now build as fast as any other files
- Fixed duplicate 'static' qualifiers for self watchers in classes declare static
- Improvements to the generated C code to reduce the number of differences with the bootstrap and not hard code struct sizes
   - Using actual size of structs and sizeof(void *)
   - Passing 0 to eMember_/eClass_AddDataMember now means pointer size alignment -- There's still an issue here as 0 used to mean 'auto compute alignment' from calls in firstPass.ec, loadSymbols.ec, pass0.ec, pass15.ec