Added tests and cunit wrapper
File and Tag structs explicitly have AbstractFile as their base

- AbstractFile will now store the string directly
- Separating allocation and initialization of structs for flexibility