parser: clean up parsing to not duplicate logic in many cases

introduces parseElement, which parses a single proftalk object. This
could be a list or other atom.

This is a precursor to having multiple objects on one line of input.