Split public header into multiple files

Splitting the public header into multiple files decreases the amount time Clane
needs to compile. External programs should be unaffected.