Organised files into multiple modules (in fact, slinkier codebase itself can be used to test linking of linker!)
- Library is now in a separate module.
- Removed linear codes from main module and segregated file reading related items to a separate module.
- Used directed graph instead of hash-tables to compute dependency.
Lint passed.
Merge branch 'develop'