Break apart loci.c

Reviewer: @andi-bigswitch

loci.c is no more. The new/init functions and the accessors are moved into one C file per class. The other random bits of code from loci.c are moved into new files. Lots of dead code removal.

The main goal is to make it easier to rewrite portions of loci to use the IR. These changes call several legacy code generation functions from codegen.py, and one by one these will be replaced.

A nice side benefit is that build times are reduced from 45s to 25s on my machine due to increased parallelism. Also, the build doesn't require a gig of RAM. There's still work to do to trim down the included headers in each class's C file.