Adding bidirectional typechecker

- Does not take integer width of header and header_val into account
- Integrated with build system
- Compiles fine
Bidirectoinal Type checker initial draft, compiles fine