For generic use, we need an atom->color function, and a very basic atom+charge -> atom type function (accepting regular failure and giving an unknown type). In the openbabel use of this library, we're going to hard code a color dictionary (for now), and always pass an unknown atom type, but long term we should provide some basic logic around those things here.