Reimplement java backend builtin list

Provides important support for proving several kernelc examples that mention I/O cells.
is this supposed to be like, something where baseTerms and baseTermTypes match up one to one? Maybe you should make a BaseTerm class that contains both of those fields, if you're going to do it this way?